From 9189c0abd7a1e4b17ad3198a188807f6a3302750 Mon Sep 17 00:00:00 2001 From: Dmitry Shalnov Date: Thu, 19 Jul 2012 06:16:24 +0100 Subject: [PATCH] Initial version --- README | 13 + compiled.eep | 1 + compiled.elf | Bin 0 -> 9793 bytes compiled.hex | 236 +++++++ compiled.lss | 1716 ++++++++++++++++++++++++++++++++++++++++++++++++++ compiled.lst | 1716 ++++++++++++++++++++++++++++++++++++++++++++++++++ compiled.map | 434 +++++++++++++ flash168 | 10 + make | 17 + tetris.c | 629 ++++++++++++++++++ 10 files changed, 4772 insertions(+) create mode 100644 README create mode 100644 compiled.eep create mode 100755 compiled.elf create mode 100644 compiled.hex create mode 100644 compiled.lss create mode 100644 compiled.lst create mode 100644 compiled.map create mode 100755 flash168 create mode 100755 make create mode 100644 tetris.c diff --git a/README b/README new file mode 100644 index 0000000..67aeeda --- /dev/null +++ b/README @@ -0,0 +1,13 @@ +INSTALLATION +------------ +Please read wiki to find step by step instrictions + +how to compile and flash it to Arduino: +http://wiki.interplaymedium.org/index.php/InterplayMedium/LEDTetris + +General instructions for Adruino + AXOD microserver integration: +http://wiki.interplaymedium.org/index.php/InterplayMedium/AxonAmpArduino + + + + diff --git a/compiled.eep b/compiled.eep new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/compiled.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/compiled.elf b/compiled.elf new file mode 100755 index 0000000000000000000000000000000000000000..ef44fca9456e3dcd08cea4414c1ee7c82ac0a0f7 GIT binary patch literal 9793 zcmc&(4R}=5nLa1~At5uVv0Cd^Fuaa)}s z0YQSyZ-59|S<6-yby;ay*9t?|b*Zj~ZTryLwQ`BLOIwyqmT2%pq1v(1iq3A!eK=f6%MGi!Ns`hMkQBNS8V2=)e+#3kL#tP!Qt;9Ej zhoZzy5ktiAV?(60Y-jXLv^Q#qym|E9qa?enV_Pr~-Ny}~-td|5&afe5IA#c$LgV8f z^ZbOU#oiqX?z!>sP(i#GIxg_37b|61PReibmv~9+=Xncsn>F{>z-mqX&-jCKn@oN7 z?sK+*+_lM0Ye+uC=RTF-^PUQgUV>U$c5>3&MNjZ|de4M=!v%5jj-4X!_HsjF;-(3k zaueHvJwe{x(?P!W1h>x!=N=xKTxYA9JjR~8b_gCTzGsdtx#HNuT`%b)H(qgMjXbSq zvTT#T*m7`a+U~27s&zVMzVzXhJe(uf$t^4;Y`Ek(w(7wgWbg(?&1vnxCm84b#L z343>G_knRo^Cu4lX4d%WxgywHfg$!`gE5 zlM~+_RopLI4E;&V`I3*W|B>Y%W82F^@-|*DX~Lfz%e3b;!7{{h8Dd#HU5sT3m=?<^ zpIn>#*u;kY#!fG~(ING-+c|7tg6P*3fsOKbHe&Oqd%9()1&eqEaz`{FUGJRZHd$0Ny|UQPFbk$ zGCz-d`8=L?#mO~^)Lyakj>4pr7%uB7Z!ND;b`5%ZUTNn~Kiz^uBwgE2d(72HUy60e zm&dOCFa#g=jV?(1j-rX3YE#(W9q0(x(X+cGHjB&hfPCdAdmy|8J6s^Tg$L_OVtd*7 z&y_SdO||dEa%`p8_d4~b4efo}nlFgI5J|21)cu``A3K#gdA!T7>Hg3219FGVaRv(3 zogFgDCTCD~SyS^Z>$m^W=#017hq8WGDi4=kiUnnl8rRF*xan#}(+n=l!($7FhRd#z zpSB#HeyHS?>njqJ(cbC5Ei+@ap5$Gl_g&YZo?$*fUOzGg<(1Z&AmxNK6d(eNhl29X zF~-5+GM=~;yP8Y|!u$Bv8yEj~5U02;yzlJi=VJ#Cg&*gV;=!@JK(vz^BinIS)Bfnp zmWq06pLqd0&7Wtd-*n54s9kyL%)%-&<`^Sgim#oR<7OTRhdFs)5?hxQv`t8s#D2lE z5+$)0a?;PI8+&f*DeJkRCn&E7+xeZ!T|(H(Q+EvE3O+|~uT=ct;y~`uSN|0hu;rB@o_;?1Z?v z@Ah*wc*2*&-p_N5S(_Wo4d)hqKr<|fm1DN{B<%`xUv=>@iBR|nB^tZOO&EO28Hyq< zh|L!4k;X_02cl14 z37QW{X!8*zf>mKyc@9?ALW1^v^B~Q7J2FkHR+BYG_VN3B4^Db{(&DrEiG!w>O>|Z< zCJ#(HTC~-)$Fw~D>`)*civNVa$qVAU{-@BA|Fu!4)_;<7>isi$rk5)8ZG!2{fk9#ryT>c07=H&iKFBY9E`k-i)X}yUoOpLjQ zR>a%lWaSBdh`+*nVd-*gxVOH+VDKx)Bq}#NvLJ4Qo&R4+o_<`j{|SgT5+%$EJq~{Hj@?T_*Pb|<7x(9l;U8sl=oyJ z4mO)%LP~M4ud{1){0(N-@on%URUGVgyuEAq4mMrKHO!{tIl6ZaHkTnFN^!7x6a*DJ zSdEV7!;e&PumxG&=sZbTjIo9rIF{V&*kI$p$9==fVoe2F^Pw^@_k zUMt`_0WTKt5&_o>c&UJw3HWXS|D}NM5%9eNUM}G82>3n$-!I??1nd;>3IV$Wyi&jo z0&WzrB;Zv7UM=7z0lNkKpn%s1xLLq00&W$sN5E|YUMpa)fPDh?3%Fgt>jb=Bz#9a- zQNRxg_^$-~T>*bjzz+-f5djAT92D>-0e1+vQ^1=AyhXr|3V5r4w+Z+$0dE&@mwh2~6Y%o_enG&0C*Z?6rhS+8t2wA;?3nV5 zpzX`SPS8auB$K0J2Rp5gb+BKt2le(}vt}LthPCSW-&vcEf6Kf&HuD}GPv%b&w)$Jz ztPKr5Y1x`eo5jc0dEAY&{r21J%;{VwHTXSV-|Pi;X0cfHe+^#0-MX57E%lIE>1uSk zTm6#P+ur6US!VHVZ1KBR;_CONu1y+hbopJ(;+Hn~nPsKVMiQ zHB9X!cLd6FiJ(xny=LL&N#-* zaF~3ah)QigKl*nDmB=+pE8ezvIJ+p|YVWviC8@A26g7Ra8qQd26k5e?B! z4jULAg|0hvivz>g0N*ZfI-}es@SA|sr=fx2a=nkh!0;^mrfm!iF93fO{?pt!{^(p0 z8I2#MWU&>vb_$%9T0-C*;Qt_SS|`T@{sZu&z<&gOTHyZzZlwR$P)Zi=Sn+I^#eNSS zQ2OX6i+zG$vXLrTtQ3=pXcYZr;BW{&{g8q7NQT_q& zPC>pIyc(6xQY7C2JRZSXuJXsgcR-#pS&Arzz^lM1j%05a_;=O$8ZrJEaI2vIW$;s| zvsHbs0@EHxh2(z?PX8CA@iX9f(^2P>&Hex``ad*+XJheusX_tye+{rEPx@~J->d5% z7_J15KtJ6NG@sdmJjHW9_;1ih_YCR#4!G!V%Lw@m;8S#eIol52rSohS1HT?V)4fRg zemG+M5%Bc<2Zmn*7w!EV9B-L=Jo><&1gBzz{};gbD~vJn|1$XBgKPG3kjsAsrx1|+ z3E-mqP2ie68b2L;i*Apz3h?OypFd*!V(0dsgf7J-?9l^f`ZWr`N!L|LG z^0yzHu^|0mzB%j#@V&ZxHah}-0QCs^$^HpNUJ+N;*Bjv4{$xZHPlMC`c)RNFIq+ue zgBR8D{la*P2QB<(g!NqvF2-*hc)9KmXVbtBKo{-xxtr~S`n0r0LO>^Z9co55qi^sYtr9tS@Mx2sg%4KDioG`LOBe-xZ@qRA(~ zFQC$%L;BtT)`}VX>uK=q`uJ?t2QKRWFYx84+W4Un{aKhhz9FgWnX@AB<@t=grrH|= zF6x^+f|r9+JTPVD{=FUi7M*jp7+j3Ea|B-lJ`A6z(0qL0>G*Q?5P16j%3+Uyk3u|2 zC&i-^T=Z`zc!|2d(0Yl1i|b_%`0K*@IRI|qn*W@=1g?#z^>G|r)c?i^{wwgQJU#yR z;P^_U$KwLHIQ}v?or9>*`p?B$r)Q3q?^5t-`gqRDz{T-4@Cu=y`6a*C?XxuCfLFg{ z{+&)IfjZ|x4J=Z?ym@uX6^BTtS6Z#$ha|5@CG#v*RTle9TQvr^H@ergcp97BRZgib zlQ(-j)RGoxl~&XFGozs*qe0r>_NSHjMkpn&D)sq2ZO%5YXSLVW!Yqv*XM?A0qmz!I zP8>bGIEH4lDWjC8X36Ds;)p7W>20d=)B)L9QNdbV8*Z(z&r;^y==QZWyEZPBe11me z7r0lqdnI_QirZO3yVonV`qd7<*VXE4ar>QBjqcUBEUTZhWT}l**0xH_?{1O2Y?Y=X z9mY(XQiG>a`W7l{lwjQ1>VrXOZfWy0yIUn~8cs<$d&6R*r^P|$(tcG`rLnz&t!$R0 zwz>3E?`dysL|?{9A6$uIvj^vY3H`nXuOzjmRm^1i#Oy0K`Xy~%nQqZYJu;Py0RdX6+7bjs zX1tyjWeT3=#&+hF8ojRd^_gj)WuWAVX4=psHLO|C-rT$hOCrUVxK}p`YoJkDf#)olTOfO$n2F-z{zT3hQ)MDi99O zdZDpGTXy%PdNYSqq~DI6_ROfX(q5Li8(: + 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> + 4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 14: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 18: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 1c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 20: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 24: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 28: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 2c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 30: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 34: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 38: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 3c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 40: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 44: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 48: 0c 94 75 00 jmp 0xea ; 0xea <__vector_18> + 4c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 50: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 54: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 58: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 5c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 60: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 64: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + +00000068 <__ctors_end>: + 68: 11 24 eor r1, r1 + 6a: 1f be out 0x3f, r1 ; 63 + 6c: cf ef ldi r28, 0xFF ; 255 + 6e: d4 e0 ldi r29, 0x04 ; 4 + 70: de bf out 0x3e, r29 ; 62 + 72: cd bf out 0x3d, r28 ; 61 + +00000074 <__do_copy_data>: + 74: 11 e0 ldi r17, 0x01 ; 1 + 76: a0 e0 ldi r26, 0x00 ; 0 + 78: b1 e0 ldi r27, 0x01 ; 1 + 7a: e2 e1 ldi r30, 0x12 ; 18 + 7c: fe e0 ldi r31, 0x0E ; 14 + 7e: 02 c0 rjmp .+4 ; 0x84 <.do_copy_data_start> + +00000080 <.do_copy_data_loop>: + 80: 05 90 lpm r0, Z+ + 82: 0d 92 st X+, r0 + +00000084 <.do_copy_data_start>: + 84: aa 38 cpi r26, 0x8A ; 138 + 86: b1 07 cpc r27, r17 + 88: d9 f7 brne .-10 ; 0x80 <.do_copy_data_loop> + +0000008a <__do_clear_bss>: + 8a: 11 e0 ldi r17, 0x01 ; 1 + 8c: aa e8 ldi r26, 0x8A ; 138 + 8e: b1 e0 ldi r27, 0x01 ; 1 + 90: 01 c0 rjmp .+2 ; 0x94 <.do_clear_bss_start> + +00000092 <.do_clear_bss_loop>: + 92: 1d 92 st X+, r1 + +00000094 <.do_clear_bss_start>: + 94: ae 39 cpi r26, 0x9E ; 158 + 96: b1 07 cpc r27, r17 + 98: e1 f7 brne .-8 ; 0x92 <.do_clear_bss_loop> + 9a: 0e 94 c6 05 call 0xb8c ; 0xb8c
+ 9e: 0c 94 07 07 jmp 0xe0e ; 0xe0e <_exit> + +000000a2 <__bad_interrupt>: + a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000a6 : + a6: e1 ec ldi r30, 0xC1 ; 193 + a8: f0 e0 ldi r31, 0x00 ; 0 + aa: 80 81 ld r24, Z + ac: 80 68 ori r24, 0x80 ; 128 + ae: 80 83 st Z, r24 + b0: 08 95 ret + +000000b2 : + b2: 90 93 c5 00 sts 0x00C5, r25 + b6: 80 93 c4 00 sts 0x00C4, r24 + ba: 86 e0 ldi r24, 0x06 ; 6 + bc: 80 93 c2 00 sts 0x00C2, r24 + c0: e1 ec ldi r30, 0xC1 ; 193 + c2: f0 e0 ldi r31, 0x00 ; 0 + c4: 80 81 ld r24, Z + c6: 88 61 ori r24, 0x18 ; 24 + c8: 80 83 st Z, r24 + ca: 08 95 ret + +000000cc : + cc: 80 91 c0 00 lds r24, 0x00C0 + d0: 87 ff sbrs r24, 7 + d2: fc cf rjmp .-8 ; 0xcc + d4: 80 91 c6 00 lds r24, 0x00C6 + d8: 08 95 ret + +000000da : + da: 98 2f mov r25, r24 + dc: 80 91 c0 00 lds r24, 0x00C0 + e0: 85 ff sbrs r24, 5 + e2: fc cf rjmp .-8 ; 0xdc + e4: 90 93 c6 00 sts 0x00C6, r25 + e8: 08 95 ret + +000000ea <__vector_18>: + ea: 1f 92 push r1 + ec: 0f 92 push r0 + ee: 0f b6 in r0, 0x3f ; 63 + f0: 0f 92 push r0 + f2: 11 24 eor r1, r1 + f4: 8f 93 push r24 + f6: df 93 push r29 + f8: cf 93 push r28 + fa: 0f 92 push r0 + fc: cd b7 in r28, 0x3d ; 61 + fe: de b7 in r29, 0x3e ; 62 + 100: 80 91 c6 00 lds r24, 0x00C6 + 104: 89 83 std Y+1, r24 ; 0x01 + 106: 89 81 ldd r24, Y+1 ; 0x01 + 108: 80 93 9d 01 sts 0x019D, r24 + 10c: 0f 90 pop r0 + 10e: cf 91 pop r28 + 110: df 91 pop r29 + 112: 8f 91 pop r24 + 114: 0f 90 pop r0 + 116: 0f be out 0x3f, r0 ; 63 + 118: 0f 90 pop r0 + 11a: 1f 90 pop r1 + 11c: 18 95 reti + +0000011e : + 11e: fc 01 movw r30, r24 + 120: 07 c0 rjmp .+14 ; 0x130 + 122: 80 91 c0 00 lds r24, 0x00C0 + 126: 85 ff sbrs r24, 5 + 128: fc cf rjmp .-8 ; 0x122 + 12a: 90 93 c6 00 sts 0x00C6, r25 + 12e: 31 96 adiw r30, 0x01 ; 1 + 130: 90 81 ld r25, Z + 132: 99 23 and r25, r25 + 134: b1 f7 brne .-20 ; 0x122 + 136: 08 95 ret + +00000138 : + 138: cf 93 push r28 + 13a: df 93 push r29 + 13c: ec 01 movw r28, r24 + 13e: 28 ee ldi r18, 0xE8 ; 232 + 140: 33 e0 ldi r19, 0x03 ; 3 + 142: e0 e0 ldi r30, 0x00 ; 0 + 144: f0 e0 ldi r31, 0x00 ; 0 + 146: ce 01 movw r24, r28 + 148: b9 01 movw r22, r18 + 14a: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + 14e: 46 2f mov r20, r22 + 150: 80 91 c0 00 lds r24, 0x00C0 + 154: 85 ff sbrs r24, 5 + 156: fc cf rjmp .-8 ; 0x150 + 158: 40 5d subi r20, 0xD0 ; 208 + 15a: 40 93 c6 00 sts 0x00C6, r20 + 15e: 40 53 subi r20, 0x30 ; 48 + 160: c9 01 movw r24, r18 + 162: 6a e0 ldi r22, 0x0A ; 10 + 164: 70 e0 ldi r23, 0x00 ; 0 + 166: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + 16a: 31 96 adiw r30, 0x01 ; 1 + 16c: e4 30 cpi r30, 0x04 ; 4 + 16e: f1 05 cpc r31, r1 + 170: 71 f0 breq .+28 ; 0x18e + 172: 84 2f mov r24, r20 + 174: 90 e0 ldi r25, 0x00 ; 0 + 176: ac 01 movw r20, r24 + 178: 42 9f mul r20, r18 + 17a: c0 01 movw r24, r0 + 17c: 43 9f mul r20, r19 + 17e: 90 0d add r25, r0 + 180: 52 9f mul r21, r18 + 182: 90 0d add r25, r0 + 184: 11 24 eor r1, r1 + 186: c8 1b sub r28, r24 + 188: d9 0b sbc r29, r25 + 18a: 9b 01 movw r18, r22 + 18c: dc cf rjmp .-72 ; 0x146 + 18e: df 91 pop r29 + 190: cf 91 pop r28 + 192: 08 95 ret + +00000194 : + 194: df 93 push r29 + 196: cf 93 push r28 + 198: 00 d0 rcall .+0 ; 0x19a + 19a: cd b7 in r28, 0x3d ; 61 + 19c: de b7 in r29, 0x3e ; 62 + 19e: 9c 01 movw r18, r24 + 1a0: 0f c0 rjmp .+30 ; 0x1c0 + 1a2: 1a 82 std Y+2, r1 ; 0x02 + 1a4: 19 82 std Y+1, r1 ; 0x01 + 1a6: 05 c0 rjmp .+10 ; 0x1b2 + 1a8: 89 81 ldd r24, Y+1 ; 0x01 + 1aa: 9a 81 ldd r25, Y+2 ; 0x02 + 1ac: 01 96 adiw r24, 0x01 ; 1 + 1ae: 9a 83 std Y+2, r25 ; 0x02 + 1b0: 89 83 std Y+1, r24 ; 0x01 + 1b2: 89 81 ldd r24, Y+1 ; 0x01 + 1b4: 9a 81 ldd r25, Y+2 ; 0x02 + 1b6: 8b 35 cpi r24, 0x5B ; 91 + 1b8: 91 05 cpc r25, r1 + 1ba: b1 f7 brne .-20 ; 0x1a8 + 1bc: 21 50 subi r18, 0x01 ; 1 + 1be: 30 40 sbci r19, 0x00 ; 0 + 1c0: 21 15 cp r18, r1 + 1c2: 31 05 cpc r19, r1 + 1c4: 71 f7 brne .-36 ; 0x1a2 + 1c6: 0f 90 pop r0 + 1c8: 0f 90 pop r0 + 1ca: cf 91 pop r28 + 1cc: df 91 pop r29 + 1ce: 08 95 ret + +000001d0 : + 1d0: df 93 push r29 + 1d2: cf 93 push r28 + 1d4: 00 d0 rcall .+0 ; 0x1d6 + 1d6: cd b7 in r28, 0x3d ; 61 + 1d8: de b7 in r29, 0x3e ; 62 + 1da: 9c 01 movw r18, r24 + 1dc: 0e c0 rjmp .+28 ; 0x1fa + 1de: 1a 82 std Y+2, r1 ; 0x02 + 1e0: 19 82 std Y+1, r1 ; 0x01 + 1e2: 05 c0 rjmp .+10 ; 0x1ee + 1e4: 89 81 ldd r24, Y+1 ; 0x01 + 1e6: 9a 81 ldd r25, Y+2 ; 0x02 + 1e8: 01 96 adiw r24, 0x01 ; 1 + 1ea: 9a 83 std Y+2, r25 ; 0x02 + 1ec: 89 83 std Y+1, r24 ; 0x01 + 1ee: 89 81 ldd r24, Y+1 ; 0x01 + 1f0: 9a 81 ldd r25, Y+2 ; 0x02 + 1f2: 09 97 sbiw r24, 0x09 ; 9 + 1f4: b9 f7 brne .-18 ; 0x1e4 + 1f6: 21 50 subi r18, 0x01 ; 1 + 1f8: 30 40 sbci r19, 0x00 ; 0 + 1fa: 21 15 cp r18, r1 + 1fc: 31 05 cpc r19, r1 + 1fe: 79 f7 brne .-34 ; 0x1de + 200: 0f 90 pop r0 + 202: 0f 90 pop r0 + 204: cf 91 pop r28 + 206: df 91 pop r29 + 208: 08 95 ret + +0000020a : + 20a: df 93 push r29 + 20c: cf 93 push r28 + 20e: 00 d0 rcall .+0 ; 0x210 + 210: cd b7 in r28, 0x3d ; 61 + 212: de b7 in r29, 0x3e ; 62 + 214: 40 e0 ldi r20, 0x00 ; 0 + 216: 2a 9a sbi 0x05, 2 ; 5 + 218: 21 e0 ldi r18, 0x01 ; 1 + 21a: 30 e0 ldi r19, 0x00 ; 0 + 21c: 1a 82 std Y+2, r1 ; 0x02 + 21e: 19 82 std Y+1, r1 ; 0x01 + 220: 05 c0 rjmp .+10 ; 0x22c + 222: 89 81 ldd r24, Y+1 ; 0x01 + 224: 9a 81 ldd r25, Y+2 ; 0x02 + 226: 01 96 adiw r24, 0x01 ; 1 + 228: 9a 83 std Y+2, r25 ; 0x02 + 22a: 89 83 std Y+1, r24 ; 0x01 + 22c: 89 81 ldd r24, Y+1 ; 0x01 + 22e: 9a 81 ldd r25, Y+2 ; 0x02 + 230: 8b 35 cpi r24, 0x5B ; 91 + 232: 91 05 cpc r25, r1 + 234: b1 f7 brne .-20 ; 0x222 + 236: 21 50 subi r18, 0x01 ; 1 + 238: 30 40 sbci r19, 0x00 ; 0 + 23a: 81 f7 brne .-32 ; 0x21c + 23c: 2a 98 cbi 0x05, 2 ; 5 + 23e: 21 e0 ldi r18, 0x01 ; 1 + 240: 30 e0 ldi r19, 0x00 ; 0 + 242: 1a 82 std Y+2, r1 ; 0x02 + 244: 19 82 std Y+1, r1 ; 0x01 + 246: 05 c0 rjmp .+10 ; 0x252 + 248: 89 81 ldd r24, Y+1 ; 0x01 + 24a: 9a 81 ldd r25, Y+2 ; 0x02 + 24c: 01 96 adiw r24, 0x01 ; 1 + 24e: 9a 83 std Y+2, r25 ; 0x02 + 250: 89 83 std Y+1, r24 ; 0x01 + 252: 89 81 ldd r24, Y+1 ; 0x01 + 254: 9a 81 ldd r25, Y+2 ; 0x02 + 256: 8b 35 cpi r24, 0x5B ; 91 + 258: 91 05 cpc r25, r1 + 25a: b1 f7 brne .-20 ; 0x248 + 25c: 21 50 subi r18, 0x01 ; 1 + 25e: 30 40 sbci r19, 0x00 ; 0 + 260: 81 f7 brne .-32 ; 0x242 + 262: 4f 5f subi r20, 0xFF ; 255 + 264: 44 36 cpi r20, 0x64 ; 100 + 266: b9 f6 brne .-82 ; 0x216 + 268: 0f 90 pop r0 + 26a: 0f 90 pop r0 + 26c: cf 91 pop r28 + 26e: df 91 pop r29 + 270: 08 95 ret + +00000272 : + 272: df 93 push r29 + 274: cf 93 push r28 + 276: 00 d0 rcall .+0 ; 0x278 + 278: cd b7 in r28, 0x3d ; 61 + 27a: de b7 in r29, 0x3e ; 62 + 27c: 41 e0 ldi r20, 0x01 ; 1 + 27e: 50 e0 ldi r21, 0x00 ; 0 + 280: 2a c0 rjmp .+84 ; 0x2d6 + 282: 2a 9a sbi 0x05, 2 ; 5 + 284: 9a 01 movw r18, r20 + 286: 1a 82 std Y+2, r1 ; 0x02 + 288: 19 82 std Y+1, r1 ; 0x01 + 28a: 05 c0 rjmp .+10 ; 0x296 + 28c: 89 81 ldd r24, Y+1 ; 0x01 + 28e: 9a 81 ldd r25, Y+2 ; 0x02 + 290: 01 96 adiw r24, 0x01 ; 1 + 292: 9a 83 std Y+2, r25 ; 0x02 + 294: 89 83 std Y+1, r24 ; 0x01 + 296: 89 81 ldd r24, Y+1 ; 0x01 + 298: 9a 81 ldd r25, Y+2 ; 0x02 + 29a: 09 97 sbiw r24, 0x09 ; 9 + 29c: b9 f7 brne .-18 ; 0x28c + 29e: 21 50 subi r18, 0x01 ; 1 + 2a0: 30 40 sbci r19, 0x00 ; 0 + 2a2: 89 f7 brne .-30 ; 0x286 + 2a4: 2a 98 cbi 0x05, 2 ; 5 + 2a6: 9a 01 movw r18, r20 + 2a8: 1a 82 std Y+2, r1 ; 0x02 + 2aa: 19 82 std Y+1, r1 ; 0x01 + 2ac: 05 c0 rjmp .+10 ; 0x2b8 + 2ae: 89 81 ldd r24, Y+1 ; 0x01 + 2b0: 9a 81 ldd r25, Y+2 ; 0x02 + 2b2: 01 96 adiw r24, 0x01 ; 1 + 2b4: 9a 83 std Y+2, r25 ; 0x02 + 2b6: 89 83 std Y+1, r24 ; 0x01 + 2b8: 89 81 ldd r24, Y+1 ; 0x01 + 2ba: 9a 81 ldd r25, Y+2 ; 0x02 + 2bc: 09 97 sbiw r24, 0x09 ; 9 + 2be: b9 f7 brne .-18 ; 0x2ae + 2c0: 21 50 subi r18, 0x01 ; 1 + 2c2: 30 40 sbci r19, 0x00 ; 0 + 2c4: 89 f7 brne .-30 ; 0x2a8 + 2c6: 6f 5f subi r22, 0xFF ; 255 + 2c8: 64 36 cpi r22, 0x64 ; 100 + 2ca: d9 f6 brne .-74 ; 0x282 + 2cc: 46 5f subi r20, 0xF6 ; 246 + 2ce: 5f 4f sbci r21, 0xFF ; 255 + 2d0: 49 32 cpi r20, 0x29 ; 41 + 2d2: 51 05 cpc r21, r1 + 2d4: 11 f0 breq .+4 ; 0x2da + 2d6: 60 e0 ldi r22, 0x00 ; 0 + 2d8: d4 cf rjmp .-88 ; 0x282 + 2da: 0f 90 pop r0 + 2dc: 0f 90 pop r0 + 2de: cf 91 pop r28 + 2e0: df 91 pop r29 + 2e2: 08 95 ret + +000002e4 : + 2e4: 68 2f mov r22, r24 + 2e6: 27 e0 ldi r18, 0x07 ; 7 + 2e8: 30 e0 ldi r19, 0x00 ; 0 + 2ea: 41 e0 ldi r20, 0x01 ; 1 + 2ec: 50 e0 ldi r21, 0x00 ; 0 + 2ee: 2c 98 cbi 0x05, 4 ; 5 + 2f0: ca 01 movw r24, r20 + 2f2: 02 2e mov r0, r18 + 2f4: 02 c0 rjmp .+4 ; 0x2fa + 2f6: 88 0f add r24, r24 + 2f8: 99 1f adc r25, r25 + 2fa: 0a 94 dec r0 + 2fc: e2 f7 brpl .-8 ; 0x2f6 + 2fe: 86 23 and r24, r22 + 300: 11 f0 breq .+4 ; 0x306 + 302: 2b 9a sbi 0x05, 3 ; 5 + 304: 01 c0 rjmp .+2 ; 0x308 + 306: 2b 98 cbi 0x05, 3 ; 5 + 308: 2c 9a sbi 0x05, 4 ; 5 + 30a: 21 50 subi r18, 0x01 ; 1 + 30c: 30 40 sbci r19, 0x00 ; 0 + 30e: 8f ef ldi r24, 0xFF ; 255 + 310: 2f 3f cpi r18, 0xFF ; 255 + 312: 38 07 cpc r19, r24 + 314: 61 f7 brne .-40 ; 0x2ee + 316: 08 95 ret + +00000318 : + 318: 0f 93 push r16 + 31a: 1f 93 push r17 + 31c: cf 93 push r28 + 31e: df 93 push r29 + 320: 16 2f mov r17, r22 + 322: 04 2f mov r16, r20 + 324: 2d 98 cbi 0x05, 5 ; 5 + 326: 21 e0 ldi r18, 0x01 ; 1 + 328: 30 e0 ldi r19, 0x00 ; 0 + 32a: c8 2f mov r28, r24 + 32c: d0 e0 ldi r29, 0x00 ; 0 + 32e: 08 c0 rjmp .+16 ; 0x340 + 330: 80 e0 ldi r24, 0x00 ; 0 + 332: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 336: 80 e0 ldi r24, 0x00 ; 0 + 338: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 33c: 20 e0 ldi r18, 0x00 ; 0 + 33e: 30 e0 ldi r19, 0x00 ; 0 + 340: c2 17 cp r28, r18 + 342: d3 07 cpc r29, r19 + 344: ac f3 brlt .-22 ; 0x330 + 346: 81 2f mov r24, r17 + 348: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 34c: 80 2f mov r24, r16 + 34e: 04 c0 rjmp .+8 ; 0x358 + 350: 80 e0 ldi r24, 0x00 ; 0 + 352: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 356: 80 e0 ldi r24, 0x00 ; 0 + 358: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 35c: 21 97 sbiw r28, 0x01 ; 1 + 35e: 1c 16 cp r1, r28 + 360: 1d 06 cpc r1, r29 + 362: b4 f3 brlt .-20 ; 0x350 + 364: 2d 98 cbi 0x05, 5 ; 5 + 366: 2d 9a sbi 0x05, 5 ; 5 + 368: df 91 pop r29 + 36a: cf 91 pop r28 + 36c: 1f 91 pop r17 + 36e: 0f 91 pop r16 + 370: 08 95 ret + +00000372 : + 372: 48 2f mov r20, r24 + 374: 50 e0 ldi r21, 0x00 ; 0 + 376: 26 2f mov r18, r22 + 378: 30 e0 ldi r19, 0x00 ; 0 + 37a: 65 30 cpi r22, 0x05 ; 5 + 37c: 58 f4 brcc .+22 ; 0x394 + 37e: 84 e0 ldi r24, 0x04 ; 4 + 380: 90 e0 ldi r25, 0x00 ; 0 + 382: 82 1b sub r24, r18 + 384: 93 0b sbc r25, r19 + 386: 02 c0 rjmp .+4 ; 0x38c + 388: 44 0f add r20, r20 + 38a: 55 1f adc r21, r21 + 38c: 8a 95 dec r24 + 38e: e2 f7 brpl .-8 ; 0x388 + 390: 84 2f mov r24, r20 + 392: 08 95 ret + 394: 24 50 subi r18, 0x04 ; 4 + 396: 30 40 sbci r19, 0x00 ; 0 + 398: 02 c0 rjmp .+4 ; 0x39e + 39a: 55 95 asr r21 + 39c: 47 95 ror r20 + 39e: 2a 95 dec r18 + 3a0: e2 f7 brpl .-8 ; 0x39a + 3a2: 84 2f mov r24, r20 + 3a4: 08 95 ret + +000003a6 : + 3a6: 0f 93 push r16 + 3a8: 1f 93 push r17 + 3aa: cf 93 push r28 + 3ac: df 93 push r29 + 3ae: c0 e0 ldi r28, 0x00 ; 0 + 3b0: d0 e0 ldi r29, 0x00 ; 0 + 3b2: 04 e0 ldi r16, 0x04 ; 4 + 3b4: 10 e0 ldi r17, 0x00 ; 0 + 3b6: 80 91 8c 01 lds r24, 0x018C + 3ba: 28 2f mov r18, r24 + 3bc: 30 e0 ldi r19, 0x00 ; 0 + 3be: c2 17 cp r28, r18 + 3c0: d3 07 cpc r29, r19 + 3c2: ec f0 brlt .+58 ; 0x3fe + 3c4: c9 01 movw r24, r18 + 3c6: 03 96 adiw r24, 0x03 ; 3 + 3c8: 8c 17 cp r24, r28 + 3ca: 9d 07 cpc r25, r29 + 3cc: c4 f0 brlt .+48 ; 0x3fe + 3ce: ce 01 movw r24, r28 + 3d0: 82 1b sub r24, r18 + 3d2: 93 0b sbc r25, r19 + 3d4: e0 91 84 01 lds r30, 0x0184 + 3d8: f0 e0 ldi r31, 0x00 ; 0 + 3da: 20 91 8b 01 lds r18, 0x018B + 3de: ee 0f add r30, r30 + 3e0: ff 1f adc r31, r31 + 3e2: ee 0f add r30, r30 + 3e4: ff 1f adc r31, r31 + 3e6: e2 0f add r30, r18 + 3e8: f1 1d adc r31, r1 + 3ea: ee 0f add r30, r30 + 3ec: ff 1f adc r31, r31 + 3ee: ee 0f add r30, r30 + 3f0: ff 1f adc r31, r31 + 3f2: e8 0f add r30, r24 + 3f4: f9 1f adc r31, r25 + 3f6: ec 5c subi r30, 0xCC ; 204 + 3f8: fe 4f sbci r31, 0xFE ; 254 + 3fa: e0 81 ld r30, Z + 3fc: 01 c0 rjmp .+2 ; 0x400 + 3fe: e0 e0 ldi r30, 0x00 ; 0 + 400: 80 91 85 01 lds r24, 0x0185 + 404: 4e 2f mov r20, r30 + 406: 50 e0 ldi r21, 0x00 ; 0 + 408: 28 2f mov r18, r24 + 40a: 30 e0 ldi r19, 0x00 ; 0 + 40c: 85 30 cpi r24, 0x05 ; 5 + 40e: 48 f4 brcc .+18 ; 0x422 + 410: c8 01 movw r24, r16 + 412: 82 1b sub r24, r18 + 414: 93 0b sbc r25, r19 + 416: 02 c0 rjmp .+4 ; 0x41c + 418: 44 0f add r20, r20 + 41a: 55 1f adc r21, r21 + 41c: 8a 95 dec r24 + 41e: e2 f7 brpl .-8 ; 0x418 + 420: 07 c0 rjmp .+14 ; 0x430 + 422: 24 50 subi r18, 0x04 ; 4 + 424: 30 40 sbci r19, 0x00 ; 0 + 426: 02 c0 rjmp .+4 ; 0x42c + 428: 55 95 asr r21 + 42a: 47 95 ror r20 + 42c: 2a 95 dec r18 + 42e: e2 f7 brpl .-8 ; 0x428 + 430: ce 01 movw r24, r28 + 432: 8f 5f subi r24, 0xFF ; 255 + 434: 68 2f mov r22, r24 + 436: fe 01 movw r30, r28 + 438: ee 56 subi r30, 0x6E ; 110 + 43a: fe 4f sbci r31, 0xFE ; 254 + 43c: 80 81 ld r24, Z + 43e: 48 2b or r20, r24 + 440: 81 e0 ldi r24, 0x01 ; 1 + 442: 0e 94 8c 01 call 0x318 ; 0x318 + 446: 21 96 adiw r28, 0x01 ; 1 + 448: c8 30 cpi r28, 0x08 ; 8 + 44a: d1 05 cpc r29, r1 + 44c: 09 f0 breq .+2 ; 0x450 + 44e: b3 cf rjmp .-154 ; 0x3b6 + 450: df 91 pop r29 + 452: cf 91 pop r28 + 454: 1f 91 pop r17 + 456: 0f 91 pop r16 + 458: 08 95 ret + +0000045a : + 45a: 1f 93 push r17 + 45c: cf 93 push r28 + 45e: df 93 push r29 + 460: 10 91 85 01 lds r17, 0x0185 + 464: 81 2f mov r24, r17 + 466: 90 e0 ldi r25, 0x00 ; 0 + 468: 44 e0 ldi r20, 0x04 ; 4 + 46a: 50 e0 ldi r21, 0x00 ; 0 + 46c: 48 1b sub r20, r24 + 46e: 59 0b sbc r21, r25 + 470: ec 01 movw r28, r24 + 472: 24 97 sbiw r28, 0x04 ; 4 + 474: 80 91 8c 01 lds r24, 0x018C + 478: 30 91 8b 01 lds r19, 0x018B + 47c: 20 91 84 01 lds r18, 0x0184 + 480: e2 2f mov r30, r18 + 482: f0 e0 ldi r31, 0x00 ; 0 + 484: ee 0f add r30, r30 + 486: ff 1f adc r31, r31 + 488: ee 0f add r30, r30 + 48a: ff 1f adc r31, r31 + 48c: e3 0f add r30, r19 + 48e: f1 1d adc r31, r1 + 490: ee 0f add r30, r30 + 492: ff 1f adc r31, r31 + 494: ee 0f add r30, r30 + 496: ff 1f adc r31, r31 + 498: ec 5c subi r30, 0xCC ; 204 + 49a: fe 4f sbci r31, 0xFE ; 254 + 49c: 90 e0 ldi r25, 0x00 ; 0 + 49e: dc 01 movw r26, r24 + 4a0: ad 56 subi r26, 0x6D ; 109 + 4a2: be 4f sbci r27, 0xFE ; 254 + 4a4: bc 01 movw r22, r24 + 4a6: 69 56 subi r22, 0x69 ; 105 + 4a8: 7e 4f sbci r23, 0xFE ; 254 + 4aa: 80 81 ld r24, Z + 4ac: 28 2f mov r18, r24 + 4ae: 30 e0 ldi r19, 0x00 ; 0 + 4b0: 15 30 cpi r17, 0x05 ; 5 + 4b2: 38 f4 brcc .+14 ; 0x4c2 + 4b4: 04 2e mov r0, r20 + 4b6: 02 c0 rjmp .+4 ; 0x4bc + 4b8: 22 0f add r18, r18 + 4ba: 33 1f adc r19, r19 + 4bc: 0a 94 dec r0 + 4be: e2 f7 brpl .-8 ; 0x4b8 + 4c0: 06 c0 rjmp .+12 ; 0x4ce + 4c2: 0c 2e mov r0, r28 + 4c4: 02 c0 rjmp .+4 ; 0x4ca + 4c6: 35 95 asr r19 + 4c8: 27 95 ror r18 + 4ca: 0a 94 dec r0 + 4cc: e2 f7 brpl .-8 ; 0x4c6 + 4ce: 8c 91 ld r24, X + 4d0: 28 23 and r18, r24 + 4d2: 11 f0 breq .+4 ; 0x4d8 + 4d4: 81 e0 ldi r24, 0x01 ; 1 + 4d6: 06 c0 rjmp .+12 ; 0x4e4 + 4d8: 31 96 adiw r30, 0x01 ; 1 + 4da: 11 96 adiw r26, 0x01 ; 1 + 4dc: a6 17 cp r26, r22 + 4de: b7 07 cpc r27, r23 + 4e0: 21 f7 brne .-56 ; 0x4aa + 4e2: 80 e0 ldi r24, 0x00 ; 0 + 4e4: df 91 pop r29 + 4e6: cf 91 pop r28 + 4e8: 1f 91 pop r17 + 4ea: 08 95 ret + +000004ec : + 4ec: 1f 93 push r17 + 4ee: cf 93 push r28 + 4f0: df 93 push r29 + 4f2: 10 91 85 01 lds r17, 0x0185 + 4f6: 81 2f mov r24, r17 + 4f8: 90 e0 ldi r25, 0x00 ; 0 + 4fa: 44 e0 ldi r20, 0x04 ; 4 + 4fc: 50 e0 ldi r21, 0x00 ; 0 + 4fe: 48 1b sub r20, r24 + 500: 59 0b sbc r21, r25 + 502: ec 01 movw r28, r24 + 504: 24 97 sbiw r28, 0x04 ; 4 + 506: 80 91 8c 01 lds r24, 0x018C + 50a: 30 91 8b 01 lds r19, 0x018B + 50e: 20 91 84 01 lds r18, 0x0184 + 512: e2 2f mov r30, r18 + 514: f0 e0 ldi r31, 0x00 ; 0 + 516: ee 0f add r30, r30 + 518: ff 1f adc r31, r31 + 51a: ee 0f add r30, r30 + 51c: ff 1f adc r31, r31 + 51e: e3 0f add r30, r19 + 520: f1 1d adc r31, r1 + 522: ee 0f add r30, r30 + 524: ff 1f adc r31, r31 + 526: ee 0f add r30, r30 + 528: ff 1f adc r31, r31 + 52a: ec 5c subi r30, 0xCC ; 204 + 52c: fe 4f sbci r31, 0xFE ; 254 + 52e: 90 e0 ldi r25, 0x00 ; 0 + 530: dc 01 movw r26, r24 + 532: ae 56 subi r26, 0x6E ; 110 + 534: be 4f sbci r27, 0xFE ; 254 + 536: bc 01 movw r22, r24 + 538: 6a 56 subi r22, 0x6A ; 106 + 53a: 7e 4f sbci r23, 0xFE ; 254 + 53c: 80 81 ld r24, Z + 53e: 28 2f mov r18, r24 + 540: 30 e0 ldi r19, 0x00 ; 0 + 542: 15 30 cpi r17, 0x05 ; 5 + 544: 38 f4 brcc .+14 ; 0x554 <__stack+0x55> + 546: 04 2e mov r0, r20 + 548: 02 c0 rjmp .+4 ; 0x54e <__stack+0x4f> + 54a: 22 0f add r18, r18 + 54c: 33 1f adc r19, r19 + 54e: 0a 94 dec r0 + 550: e2 f7 brpl .-8 ; 0x54a <__stack+0x4b> + 552: 06 c0 rjmp .+12 ; 0x560 <__stack+0x61> + 554: 0c 2e mov r0, r28 + 556: 02 c0 rjmp .+4 ; 0x55c <__stack+0x5d> + 558: 35 95 asr r19 + 55a: 27 95 ror r18 + 55c: 0a 94 dec r0 + 55e: e2 f7 brpl .-8 ; 0x558 <__stack+0x59> + 560: 8c 91 ld r24, X + 562: 28 23 and r18, r24 + 564: 11 f0 breq .+4 ; 0x56a <__stack+0x6b> + 566: 81 e0 ldi r24, 0x01 ; 1 + 568: 06 c0 rjmp .+12 ; 0x576 <__stack+0x77> + 56a: 31 96 adiw r30, 0x01 ; 1 + 56c: 11 96 adiw r26, 0x01 ; 1 + 56e: a6 17 cp r26, r22 + 570: b7 07 cpc r27, r23 + 572: 21 f7 brne .-56 ; 0x53c <__stack+0x3d> + 574: 80 e0 ldi r24, 0x00 ; 0 + 576: df 91 pop r29 + 578: cf 91 pop r28 + 57a: 1f 91 pop r17 + 57c: 08 95 ret + +0000057e : + 57e: bf 92 push r11 + 580: cf 92 push r12 + 582: df 92 push r13 + 584: ef 92 push r14 + 586: ff 92 push r15 + 588: 0f 93 push r16 + 58a: 1f 93 push r17 + 58c: cf 93 push r28 + 58e: df 93 push r29 + 590: 50 91 85 01 lds r21, 0x0185 + 594: 85 2f mov r24, r21 + 596: 90 e0 ldi r25, 0x00 ; 0 + 598: 24 e0 ldi r18, 0x04 ; 4 + 59a: 30 e0 ldi r19, 0x00 ; 0 + 59c: 69 01 movw r12, r18 + 59e: c8 1a sub r12, r24 + 5a0: d9 0a sbc r13, r25 + 5a2: 0c ef ldi r16, 0xFC ; 252 + 5a4: e0 2e mov r14, r16 + 5a6: 0f ef ldi r16, 0xFF ; 255 + 5a8: f0 2e mov r15, r16 + 5aa: e8 0e add r14, r24 + 5ac: f9 1e adc r15, r25 + 5ae: b5 2e mov r11, r21 + 5b0: ba 94 dec r11 + 5b2: 8b 2d mov r24, r11 + 5b4: 90 e0 ldi r25, 0x00 ; 0 + 5b6: 89 01 movw r16, r18 + 5b8: 08 1b sub r16, r24 + 5ba: 19 0b sbc r17, r25 + 5bc: ec 01 movw r28, r24 + 5be: 24 97 sbiw r28, 0x04 ; 4 + 5c0: 80 91 8c 01 lds r24, 0x018C + 5c4: 30 91 8b 01 lds r19, 0x018B + 5c8: 20 91 84 01 lds r18, 0x0184 + 5cc: e2 2f mov r30, r18 + 5ce: f0 e0 ldi r31, 0x00 ; 0 + 5d0: ee 0f add r30, r30 + 5d2: ff 1f adc r31, r31 + 5d4: ee 0f add r30, r30 + 5d6: ff 1f adc r31, r31 + 5d8: e3 0f add r30, r19 + 5da: f1 1d adc r31, r1 + 5dc: ee 0f add r30, r30 + 5de: ff 1f adc r31, r31 + 5e0: ee 0f add r30, r30 + 5e2: ff 1f adc r31, r31 + 5e4: ec 5c subi r30, 0xCC ; 204 + 5e6: fe 4f sbci r31, 0xFE ; 254 + 5e8: 90 e0 ldi r25, 0x00 ; 0 + 5ea: dc 01 movw r26, r24 + 5ec: ae 56 subi r26, 0x6E ; 110 + 5ee: be 4f sbci r27, 0xFE ; 254 + 5f0: bc 01 movw r22, r24 + 5f2: 6a 56 subi r22, 0x6A ; 106 + 5f4: 7e 4f sbci r23, 0xFE ; 254 + 5f6: 40 81 ld r20, Z + 5f8: 24 2f mov r18, r20 + 5fa: 30 e0 ldi r19, 0x00 ; 0 + 5fc: 55 30 cpi r21, 0x05 ; 5 + 5fe: 38 f4 brcc .+14 ; 0x60e + 600: 0c 2c mov r0, r12 + 602: 02 c0 rjmp .+4 ; 0x608 + 604: 22 0f add r18, r18 + 606: 33 1f adc r19, r19 + 608: 0a 94 dec r0 + 60a: e2 f7 brpl .-8 ; 0x604 + 60c: 06 c0 rjmp .+12 ; 0x61a + 60e: 0e 2c mov r0, r14 + 610: 02 c0 rjmp .+4 ; 0x616 + 612: 35 95 asr r19 + 614: 27 95 ror r18 + 616: 0a 94 dec r0 + 618: e2 f7 brpl .-8 ; 0x612 + 61a: 27 fd sbrc r18, 7 + 61c: 1c c0 rjmp .+56 ; 0x656 + 61e: 24 2f mov r18, r20 + 620: 30 e0 ldi r19, 0x00 ; 0 + 622: 84 e0 ldi r24, 0x04 ; 4 + 624: 8b 15 cp r24, r11 + 626: 38 f0 brcs .+14 ; 0x636 + 628: 00 2e mov r0, r16 + 62a: 02 c0 rjmp .+4 ; 0x630 + 62c: 22 0f add r18, r18 + 62e: 33 1f adc r19, r19 + 630: 0a 94 dec r0 + 632: e2 f7 brpl .-8 ; 0x62c + 634: 06 c0 rjmp .+12 ; 0x642 + 636: 0c 2e mov r0, r28 + 638: 02 c0 rjmp .+4 ; 0x63e + 63a: 35 95 asr r19 + 63c: 27 95 ror r18 + 63e: 0a 94 dec r0 + 640: e2 f7 brpl .-8 ; 0x63a + 642: 8c 91 ld r24, X + 644: 28 23 and r18, r24 + 646: 39 f4 brne .+14 ; 0x656 + 648: 31 96 adiw r30, 0x01 ; 1 + 64a: 11 96 adiw r26, 0x01 ; 1 + 64c: a6 17 cp r26, r22 + 64e: b7 07 cpc r27, r23 + 650: 91 f6 brne .-92 ; 0x5f6 + 652: 80 e0 ldi r24, 0x00 ; 0 + 654: 01 c0 rjmp .+2 ; 0x658 + 656: 81 e0 ldi r24, 0x01 ; 1 + 658: df 91 pop r29 + 65a: cf 91 pop r28 + 65c: 1f 91 pop r17 + 65e: 0f 91 pop r16 + 660: ff 90 pop r15 + 662: ef 90 pop r14 + 664: df 90 pop r13 + 666: cf 90 pop r12 + 668: bf 90 pop r11 + 66a: 08 95 ret + +0000066c : + 66c: bf 92 push r11 + 66e: cf 92 push r12 + 670: df 92 push r13 + 672: ef 92 push r14 + 674: ff 92 push r15 + 676: 0f 93 push r16 + 678: 1f 93 push r17 + 67a: cf 93 push r28 + 67c: df 93 push r29 + 67e: 50 91 85 01 lds r21, 0x0185 + 682: 85 2f mov r24, r21 + 684: 90 e0 ldi r25, 0x00 ; 0 + 686: 24 e0 ldi r18, 0x04 ; 4 + 688: 30 e0 ldi r19, 0x00 ; 0 + 68a: 69 01 movw r12, r18 + 68c: c8 1a sub r12, r24 + 68e: d9 0a sbc r13, r25 + 690: 4c ef ldi r20, 0xFC ; 252 + 692: e4 2e mov r14, r20 + 694: 4f ef ldi r20, 0xFF ; 255 + 696: f4 2e mov r15, r20 + 698: e8 0e add r14, r24 + 69a: f9 1e adc r15, r25 + 69c: b5 2e mov r11, r21 + 69e: b3 94 inc r11 + 6a0: 8b 2d mov r24, r11 + 6a2: 90 e0 ldi r25, 0x00 ; 0 + 6a4: 89 01 movw r16, r18 + 6a6: 08 1b sub r16, r24 + 6a8: 19 0b sbc r17, r25 + 6aa: ec 01 movw r28, r24 + 6ac: 24 97 sbiw r28, 0x04 ; 4 + 6ae: 80 91 8c 01 lds r24, 0x018C + 6b2: 30 91 8b 01 lds r19, 0x018B + 6b6: 20 91 84 01 lds r18, 0x0184 + 6ba: e2 2f mov r30, r18 + 6bc: f0 e0 ldi r31, 0x00 ; 0 + 6be: ee 0f add r30, r30 + 6c0: ff 1f adc r31, r31 + 6c2: ee 0f add r30, r30 + 6c4: ff 1f adc r31, r31 + 6c6: e3 0f add r30, r19 + 6c8: f1 1d adc r31, r1 + 6ca: ee 0f add r30, r30 + 6cc: ff 1f adc r31, r31 + 6ce: ee 0f add r30, r30 + 6d0: ff 1f adc r31, r31 + 6d2: ec 5c subi r30, 0xCC ; 204 + 6d4: fe 4f sbci r31, 0xFE ; 254 + 6d6: 90 e0 ldi r25, 0x00 ; 0 + 6d8: dc 01 movw r26, r24 + 6da: ae 56 subi r26, 0x6E ; 110 + 6dc: be 4f sbci r27, 0xFE ; 254 + 6de: bc 01 movw r22, r24 + 6e0: 6a 56 subi r22, 0x6A ; 106 + 6e2: 7e 4f sbci r23, 0xFE ; 254 + 6e4: 40 81 ld r20, Z + 6e6: 24 2f mov r18, r20 + 6e8: 30 e0 ldi r19, 0x00 ; 0 + 6ea: 55 30 cpi r21, 0x05 ; 5 + 6ec: 38 f4 brcc .+14 ; 0x6fc + 6ee: 0c 2c mov r0, r12 + 6f0: 02 c0 rjmp .+4 ; 0x6f6 + 6f2: 22 0f add r18, r18 + 6f4: 33 1f adc r19, r19 + 6f6: 0a 94 dec r0 + 6f8: e2 f7 brpl .-8 ; 0x6f2 + 6fa: 06 c0 rjmp .+12 ; 0x708 + 6fc: 0e 2c mov r0, r14 + 6fe: 02 c0 rjmp .+4 ; 0x704 + 700: 35 95 asr r19 + 702: 27 95 ror r18 + 704: 0a 94 dec r0 + 706: e2 f7 brpl .-8 ; 0x700 + 708: 20 fd sbrc r18, 0 + 70a: 1c c0 rjmp .+56 ; 0x744 + 70c: 24 2f mov r18, r20 + 70e: 30 e0 ldi r19, 0x00 ; 0 + 710: 84 e0 ldi r24, 0x04 ; 4 + 712: 8b 15 cp r24, r11 + 714: 38 f0 brcs .+14 ; 0x724 + 716: 00 2e mov r0, r16 + 718: 02 c0 rjmp .+4 ; 0x71e + 71a: 22 0f add r18, r18 + 71c: 33 1f adc r19, r19 + 71e: 0a 94 dec r0 + 720: e2 f7 brpl .-8 ; 0x71a + 722: 06 c0 rjmp .+12 ; 0x730 + 724: 0c 2e mov r0, r28 + 726: 02 c0 rjmp .+4 ; 0x72c + 728: 35 95 asr r19 + 72a: 27 95 ror r18 + 72c: 0a 94 dec r0 + 72e: e2 f7 brpl .-8 ; 0x728 + 730: 8c 91 ld r24, X + 732: 28 23 and r18, r24 + 734: 39 f4 brne .+14 ; 0x744 + 736: 31 96 adiw r30, 0x01 ; 1 + 738: 11 96 adiw r26, 0x01 ; 1 + 73a: a6 17 cp r26, r22 + 73c: b7 07 cpc r27, r23 + 73e: 91 f6 brne .-92 ; 0x6e4 + 740: 80 e0 ldi r24, 0x00 ; 0 + 742: 01 c0 rjmp .+2 ; 0x746 + 744: 81 e0 ldi r24, 0x01 ; 1 + 746: df 91 pop r29 + 748: cf 91 pop r28 + 74a: 1f 91 pop r17 + 74c: 0f 91 pop r16 + 74e: ff 90 pop r15 + 750: ef 90 pop r14 + 752: df 90 pop r13 + 754: cf 90 pop r12 + 756: bf 90 pop r11 + 758: 08 95 ret + +0000075a : + 75a: 0f 93 push r16 + 75c: 1f 93 push r17 + 75e: cf 93 push r28 + 760: df 93 push r29 + 762: 80 91 8b 01 lds r24, 0x018B + 766: 83 30 cpi r24, 0x03 ; 3 + 768: 10 f0 brcs .+4 ; 0x76e + 76a: 20 e0 ldi r18, 0x00 ; 0 + 76c: 02 c0 rjmp .+4 ; 0x772 + 76e: 28 2f mov r18, r24 + 770: 2f 5f subi r18, 0xFF ; 255 + 772: 50 91 84 01 lds r21, 0x0184 + 776: 40 91 85 01 lds r20, 0x0185 + 77a: 84 2f mov r24, r20 + 77c: 90 e0 ldi r25, 0x00 ; 0 + 77e: 64 e0 ldi r22, 0x04 ; 4 + 780: 70 e0 ldi r23, 0x00 ; 0 + 782: 68 1b sub r22, r24 + 784: 79 0b sbc r23, r25 + 786: 8c 01 movw r16, r24 + 788: 04 50 subi r16, 0x04 ; 4 + 78a: 10 40 sbci r17, 0x00 ; 0 + 78c: 80 91 8c 01 lds r24, 0x018C + 790: e5 2f mov r30, r21 + 792: f0 e0 ldi r31, 0x00 ; 0 + 794: ee 0f add r30, r30 + 796: ff 1f adc r31, r31 + 798: ee 0f add r30, r30 + 79a: ff 1f adc r31, r31 + 79c: e2 0f add r30, r18 + 79e: f1 1d adc r31, r1 + 7a0: ee 0f add r30, r30 + 7a2: ff 1f adc r31, r31 + 7a4: ee 0f add r30, r30 + 7a6: ff 1f adc r31, r31 + 7a8: ec 5c subi r30, 0xCC ; 204 + 7aa: fe 4f sbci r31, 0xFE ; 254 + 7ac: 90 e0 ldi r25, 0x00 ; 0 + 7ae: dc 01 movw r26, r24 + 7b0: ae 56 subi r26, 0x6E ; 110 + 7b2: be 4f sbci r27, 0xFE ; 254 + 7b4: ec 01 movw r28, r24 + 7b6: ca 56 subi r28, 0x6A ; 106 + 7b8: de 4f sbci r29, 0xFE ; 254 + 7ba: 80 81 ld r24, Z + 7bc: 28 2f mov r18, r24 + 7be: 30 e0 ldi r19, 0x00 ; 0 + 7c0: 45 30 cpi r20, 0x05 ; 5 + 7c2: 38 f4 brcc .+14 ; 0x7d2 + 7c4: 06 2e mov r0, r22 + 7c6: 02 c0 rjmp .+4 ; 0x7cc + 7c8: 22 0f add r18, r18 + 7ca: 33 1f adc r19, r19 + 7cc: 0a 94 dec r0 + 7ce: e2 f7 brpl .-8 ; 0x7c8 + 7d0: 06 c0 rjmp .+12 ; 0x7de + 7d2: 00 2e mov r0, r16 + 7d4: 02 c0 rjmp .+4 ; 0x7da + 7d6: 35 95 asr r19 + 7d8: 27 95 ror r18 + 7da: 0a 94 dec r0 + 7dc: e2 f7 brpl .-8 ; 0x7d6 + 7de: 51 30 cpi r21, 0x01 ; 1 + 7e0: 31 f0 breq .+12 ; 0x7ee + 7e2: 52 30 cpi r21, 0x02 ; 2 + 7e4: 11 f0 breq .+4 ; 0x7ea + 7e6: 53 30 cpi r21, 0x03 ; 3 + 7e8: 29 f4 brne .+10 ; 0x7f4 + 7ea: 41 30 cpi r20, 0x01 ; 1 + 7ec: 99 f0 breq .+38 ; 0x814 + 7ee: 48 30 cpi r20, 0x08 ; 8 + 7f0: 39 f4 brne .+14 ; 0x800 + 7f2: 10 c0 rjmp .+32 ; 0x814 + 7f4: 54 30 cpi r21, 0x04 ; 4 + 7f6: 21 f4 brne .+8 ; 0x800 + 7f8: 42 30 cpi r20, 0x02 ; 2 + 7fa: 61 f0 breq .+24 ; 0x814 + 7fc: 47 30 cpi r20, 0x07 ; 7 + 7fe: 51 f0 breq .+20 ; 0x814 + 800: 8c 91 ld r24, X + 802: 28 23 and r18, r24 + 804: 39 f4 brne .+14 ; 0x814 + 806: 31 96 adiw r30, 0x01 ; 1 + 808: 11 96 adiw r26, 0x01 ; 1 + 80a: ac 17 cp r26, r28 + 80c: bd 07 cpc r27, r29 + 80e: a9 f6 brne .-86 ; 0x7ba + 810: 80 e0 ldi r24, 0x00 ; 0 + 812: 01 c0 rjmp .+2 ; 0x816 + 814: 81 e0 ldi r24, 0x01 ; 1 + 816: df 91 pop r29 + 818: cf 91 pop r28 + 81a: 1f 91 pop r17 + 81c: 0f 91 pop r16 + 81e: 08 95 ret + +00000820 : + 820: cf 92 push r12 + 822: df 92 push r13 + 824: ef 92 push r14 + 826: ff 92 push r15 + 828: 0f 93 push r16 + 82a: 1f 93 push r17 + 82c: df 93 push r29 + 82e: cf 93 push r28 + 830: 00 d0 rcall .+0 ; 0x832 + 832: cd b7 in r28, 0x3d ; 61 + 834: de b7 in r29, 0x3e ; 62 + 836: 80 91 8c 01 lds r24, 0x018C + 83a: b7 e0 ldi r27, 0x07 ; 7 + 83c: eb 2e mov r14, r27 + 83e: e8 22 and r14, r24 + 840: e3 94 inc r14 + 842: 00 e0 ldi r16, 0x00 ; 0 + 844: 10 e0 ldi r17, 0x00 ; 0 + 846: 86 95 lsr r24 + 848: 86 95 lsr r24 + 84a: 86 95 lsr r24 + 84c: c8 2e mov r12, r24 + 84e: c3 94 inc r12 + 850: d0 2e mov r13, r16 + 852: 80 91 8c 01 lds r24, 0x018C + 856: f8 01 movw r30, r16 + 858: e8 0f add r30, r24 + 85a: f1 1d adc r31, r1 + 85c: e8 30 cpi r30, 0x08 ; 8 + 85e: f1 05 cpc r31, r1 + 860: 0c f0 brlt .+2 ; 0x864 + 862: 6b c0 rjmp .+214 ; 0x93a + 864: ee 56 subi r30, 0x6E ; 110 + 866: fe 4f sbci r31, 0xFE ; 254 + 868: 80 81 ld r24, Z + 86a: 8f 3f cpi r24, 0xFF ; 255 + 86c: 09 f0 breq .+2 ; 0x870 + 86e: 65 c0 rjmp .+202 ; 0x93a + 870: ff 24 eor r15, r15 + 872: 8c 2d mov r24, r12 + 874: 6e 2d mov r22, r14 + 876: 40 e0 ldi r20, 0x00 ; 0 + 878: 0e 94 8c 01 call 0x318 ; 0x318 + 87c: 28 ee ldi r18, 0xE8 ; 232 + 87e: 33 e0 ldi r19, 0x03 ; 3 + 880: 1a 82 std Y+2, r1 ; 0x02 + 882: 19 82 std Y+1, r1 ; 0x01 + 884: 05 c0 rjmp .+10 ; 0x890 + 886: 89 81 ldd r24, Y+1 ; 0x01 + 888: 9a 81 ldd r25, Y+2 ; 0x02 + 88a: 01 96 adiw r24, 0x01 ; 1 + 88c: 9a 83 std Y+2, r25 ; 0x02 + 88e: 89 83 std Y+1, r24 ; 0x01 + 890: 89 81 ldd r24, Y+1 ; 0x01 + 892: 9a 81 ldd r25, Y+2 ; 0x02 + 894: 8b 35 cpi r24, 0x5B ; 91 + 896: 91 05 cpc r25, r1 + 898: b1 f7 brne .-20 ; 0x886 + 89a: 21 50 subi r18, 0x01 ; 1 + 89c: 30 40 sbci r19, 0x00 ; 0 + 89e: 81 f7 brne .-32 ; 0x880 + 8a0: 8c 2d mov r24, r12 + 8a2: 6e 2d mov r22, r14 + 8a4: 4f ef ldi r20, 0xFF ; 255 + 8a6: 0e 94 8c 01 call 0x318 ; 0x318 + 8aa: 28 ee ldi r18, 0xE8 ; 232 + 8ac: 33 e0 ldi r19, 0x03 ; 3 + 8ae: 1a 82 std Y+2, r1 ; 0x02 + 8b0: 19 82 std Y+1, r1 ; 0x01 + 8b2: 05 c0 rjmp .+10 ; 0x8be + 8b4: 89 81 ldd r24, Y+1 ; 0x01 + 8b6: 9a 81 ldd r25, Y+2 ; 0x02 + 8b8: 01 96 adiw r24, 0x01 ; 1 + 8ba: 9a 83 std Y+2, r25 ; 0x02 + 8bc: 89 83 std Y+1, r24 ; 0x01 + 8be: 89 81 ldd r24, Y+1 ; 0x01 + 8c0: 9a 81 ldd r25, Y+2 ; 0x02 + 8c2: 8b 35 cpi r24, 0x5B ; 91 + 8c4: 91 05 cpc r25, r1 + 8c6: b1 f7 brne .-20 ; 0x8b4 + 8c8: 21 50 subi r18, 0x01 ; 1 + 8ca: 30 40 sbci r19, 0x00 ; 0 + 8cc: 81 f7 brne .-32 ; 0x8ae + 8ce: f3 94 inc r15 + 8d0: 83 e0 ldi r24, 0x03 ; 3 + 8d2: f8 16 cp r15, r24 + 8d4: 71 f6 brne .-100 ; 0x872 + 8d6: 90 91 8c 01 lds r25, 0x018C + 8da: 9d 0d add r25, r13 + 8dc: 08 c0 rjmp .+16 ; 0x8ee + 8de: e9 2f mov r30, r25 + 8e0: f0 e0 ldi r31, 0x00 ; 0 + 8e2: ee 56 subi r30, 0x6E ; 110 + 8e4: fe 4f sbci r31, 0xFE ; 254 + 8e6: 82 91 ld r24, -Z + 8e8: 31 96 adiw r30, 0x01 ; 1 + 8ea: 80 83 st Z, r24 + 8ec: 91 50 subi r25, 0x01 ; 1 + 8ee: 99 23 and r25, r25 + 8f0: b1 f7 brne .-20 ; 0x8de + 8f2: 0e 94 39 01 call 0x272 ; 0x272 + 8f6: e0 e0 ldi r30, 0x00 ; 0 + 8f8: f1 e0 ldi r31, 0x01 ; 1 + 8fa: 07 c0 rjmp .+14 ; 0x90a + 8fc: 80 91 c0 00 lds r24, 0x00C0 + 900: 85 ff sbrs r24, 5 + 902: fc cf rjmp .-8 ; 0x8fc + 904: 90 93 c6 00 sts 0x00C6, r25 + 908: 31 96 adiw r30, 0x01 ; 1 + 90a: 90 81 ld r25, Z + 90c: 99 23 and r25, r25 + 90e: b1 f7 brne .-20 ; 0x8fc + 910: 80 91 86 01 lds r24, 0x0186 + 914: 8f 5f subi r24, 0xFF ; 255 + 916: 80 93 86 01 sts 0x0186, r24 + 91a: 81 50 subi r24, 0x01 ; 1 + 91c: 0e 94 9c 00 call 0x138 ; 0x138 + 920: e8 e0 ldi r30, 0x08 ; 8 + 922: f1 e0 ldi r31, 0x01 ; 1 + 924: 07 c0 rjmp .+14 ; 0x934 + 926: 80 91 c0 00 lds r24, 0x00C0 + 92a: 85 ff sbrs r24, 5 + 92c: fc cf rjmp .-8 ; 0x926 + 92e: 90 93 c6 00 sts 0x00C6, r25 + 932: 31 96 adiw r30, 0x01 ; 1 + 934: 90 81 ld r25, Z + 936: 99 23 and r25, r25 + 938: b1 f7 brne .-20 ; 0x926 + 93a: 0f 5f subi r16, 0xFF ; 255 + 93c: 1f 4f sbci r17, 0xFF ; 255 + 93e: e3 94 inc r14 + 940: 04 30 cpi r16, 0x04 ; 4 + 942: 11 05 cpc r17, r1 + 944: 09 f0 breq .+2 ; 0x948 + 946: 84 cf rjmp .-248 ; 0x850 + 948: 0f 90 pop r0 + 94a: 0f 90 pop r0 + 94c: cf 91 pop r28 + 94e: df 91 pop r29 + 950: 1f 91 pop r17 + 952: 0f 91 pop r16 + 954: ff 90 pop r15 + 956: ef 90 pop r14 + 958: df 90 pop r13 + 95a: cf 90 pop r12 + 95c: 08 95 ret + +0000095e : + 95e: af 92 push r10 + 960: bf 92 push r11 + 962: cf 92 push r12 + 964: df 92 push r13 + 966: ff 92 push r15 + 968: 0f 93 push r16 + 96a: 1f 93 push r17 + 96c: df 93 push r29 + 96e: cf 93 push r28 + 970: 00 d0 rcall .+0 ; 0x972 + 972: 00 d0 rcall .+0 ; 0x974 + 974: 0f 92 push r0 + 976: cd b7 in r28, 0x3d ; 61 + 978: de b7 in r29, 0x3e ; 62 + 97a: de 01 movw r26, r28 + 97c: 13 96 adiw r26, 0x03 ; 3 + 97e: e7 e8 ldi r30, 0x87 ; 135 + 980: f1 e0 ldi r31, 0x01 ; 1 + 982: 83 e0 ldi r24, 0x03 ; 3 + 984: 01 90 ld r0, Z+ + 986: 0d 92 st X+, r0 + 988: 81 50 subi r24, 0x01 ; 1 + 98a: e1 f7 brne .-8 ; 0x984 + 98c: 10 e0 ldi r17, 0x00 ; 0 + 98e: 1f 5f subi r17, 0xFF ; 255 + 990: 81 e0 ldi r24, 0x01 ; 1 + 992: 61 2f mov r22, r17 + 994: 4f ef ldi r20, 0xFF ; 255 + 996: 0e 94 8c 01 call 0x318 ; 0x318 + 99a: 24 ef ldi r18, 0xF4 ; 244 + 99c: 31 e0 ldi r19, 0x01 ; 1 + 99e: 1a 82 std Y+2, r1 ; 0x02 + 9a0: 19 82 std Y+1, r1 ; 0x01 + 9a2: 05 c0 rjmp .+10 ; 0x9ae + 9a4: 89 81 ldd r24, Y+1 ; 0x01 + 9a6: 9a 81 ldd r25, Y+2 ; 0x02 + 9a8: 01 96 adiw r24, 0x01 ; 1 + 9aa: 9a 83 std Y+2, r25 ; 0x02 + 9ac: 89 83 std Y+1, r24 ; 0x01 + 9ae: 89 81 ldd r24, Y+1 ; 0x01 + 9b0: 9a 81 ldd r25, Y+2 ; 0x02 + 9b2: 8b 35 cpi r24, 0x5B ; 91 + 9b4: 91 05 cpc r25, r1 + 9b6: b1 f7 brne .-20 ; 0x9a4 + 9b8: 21 50 subi r18, 0x01 ; 1 + 9ba: 30 40 sbci r19, 0x00 ; 0 + 9bc: 81 f7 brne .-32 ; 0x99e + 9be: 18 30 cpi r17, 0x08 ; 8 + 9c0: 31 f7 brne .-52 ; 0x98e + 9c2: 02 e9 ldi r16, 0x92 ; 146 + 9c4: 11 e0 ldi r17, 0x01 ; 1 + 9c6: ff 24 eor r15, r15 + 9c8: f3 94 inc r15 + 9ca: 81 e0 ldi r24, 0x01 ; 1 + 9cc: 6f 2d mov r22, r15 + 9ce: 40 e0 ldi r20, 0x00 ; 0 + 9d0: 0e 94 8c 01 call 0x318 ; 0x318 + 9d4: f8 01 movw r30, r16 + 9d6: 10 82 st Z, r1 + 9d8: 24 ef ldi r18, 0xF4 ; 244 + 9da: 31 e0 ldi r19, 0x01 ; 1 + 9dc: 1a 82 std Y+2, r1 ; 0x02 + 9de: 19 82 std Y+1, r1 ; 0x01 + 9e0: 05 c0 rjmp .+10 ; 0x9ec + 9e2: 89 81 ldd r24, Y+1 ; 0x01 + 9e4: 9a 81 ldd r25, Y+2 ; 0x02 + 9e6: 01 96 adiw r24, 0x01 ; 1 + 9e8: 9a 83 std Y+2, r25 ; 0x02 + 9ea: 89 83 std Y+1, r24 ; 0x01 + 9ec: 89 81 ldd r24, Y+1 ; 0x01 + 9ee: 9a 81 ldd r25, Y+2 ; 0x02 + 9f0: 8b 35 cpi r24, 0x5B ; 91 + 9f2: 91 05 cpc r25, r1 + 9f4: b1 f7 brne .-20 ; 0x9e2 + 9f6: 21 50 subi r18, 0x01 ; 1 + 9f8: 30 40 sbci r19, 0x00 ; 0 + 9fa: 81 f7 brne .-32 ; 0x9dc + 9fc: 0f 5f subi r16, 0xFF ; 255 + 9fe: 1f 4f sbci r17, 0xFF ; 255 + a00: f8 e0 ldi r31, 0x08 ; 8 + a02: ff 16 cp r15, r31 + a04: 09 f7 brne .-62 ; 0x9c8 + a06: ff 24 eor r15, r15 + a08: 13 e0 ldi r17, 0x03 ; 3 + a0a: a1 2e mov r10, r17 + a0c: b1 2c mov r11, r1 + a0e: ac 0e add r10, r28 + a10: bd 1e adc r11, r29 + a12: 32 c0 rjmp .+100 ; 0xa78 + a14: 00 e0 ldi r16, 0x00 ; 0 + a16: 10 e0 ldi r17, 0x00 ; 0 + a18: cf 2c mov r12, r15 + a1a: dd 24 eor r13, r13 + a1c: 20 2f mov r18, r16 + a1e: 2f 5f subi r18, 0xFF ; 255 + a20: c8 01 movw r24, r16 + a22: 8c 0d add r24, r12 + a24: 9d 1d adc r25, r13 + a26: 63 e0 ldi r22, 0x03 ; 3 + a28: 70 e0 ldi r23, 0x00 ; 0 + a2a: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + a2e: f5 01 movw r30, r10 + a30: e8 0f add r30, r24 + a32: f9 1f adc r31, r25 + a34: 81 e0 ldi r24, 0x01 ; 1 + a36: 62 2f mov r22, r18 + a38: 40 81 ld r20, Z + a3a: 0e 94 8c 01 call 0x318 ; 0x318 + a3e: 0f 5f subi r16, 0xFF ; 255 + a40: 1f 4f sbci r17, 0xFF ; 255 + a42: 08 30 cpi r16, 0x08 ; 8 + a44: 11 05 cpc r17, r1 + a46: 51 f7 brne .-44 ; 0xa1c + a48: 81 e0 ldi r24, 0x01 ; 1 + a4a: 8f 15 cp r24, r15 + a4c: 10 f4 brcc .+4 ; 0xa52 + a4e: ff 24 eor r15, r15 + a50: 01 c0 rjmp .+2 ; 0xa54 + a52: f3 94 inc r15 + a54: 28 ee ldi r18, 0xE8 ; 232 + a56: 33 e0 ldi r19, 0x03 ; 3 + a58: 1a 82 std Y+2, r1 ; 0x02 + a5a: 19 82 std Y+1, r1 ; 0x01 + a5c: 05 c0 rjmp .+10 ; 0xa68 + a5e: 89 81 ldd r24, Y+1 ; 0x01 + a60: 9a 81 ldd r25, Y+2 ; 0x02 + a62: 01 96 adiw r24, 0x01 ; 1 + a64: 9a 83 std Y+2, r25 ; 0x02 + a66: 89 83 std Y+1, r24 ; 0x01 + a68: 89 81 ldd r24, Y+1 ; 0x01 + a6a: 9a 81 ldd r25, Y+2 ; 0x02 + a6c: 8b 35 cpi r24, 0x5B ; 91 + a6e: 91 05 cpc r25, r1 + a70: b1 f7 brne .-20 ; 0xa5e + a72: 21 50 subi r18, 0x01 ; 1 + a74: 30 40 sbci r19, 0x00 ; 0 + a76: 81 f7 brne .-32 ; 0xa58 + a78: 80 91 9d 01 lds r24, 0x019D + a7c: 88 23 and r24, r24 + a7e: 51 f2 breq .-108 ; 0xa14 + a80: 81 e0 ldi r24, 0x01 ; 1 + a82: 80 93 86 01 sts 0x0186, r24 + a86: e2 e1 ldi r30, 0x12 ; 18 + a88: f1 e0 ldi r31, 0x01 ; 1 + a8a: 07 c0 rjmp .+14 ; 0xa9a + a8c: 80 91 c0 00 lds r24, 0x00C0 + a90: 85 ff sbrs r24, 5 + a92: fc cf rjmp .-8 ; 0xa8c + a94: 90 93 c6 00 sts 0x00C6, r25 + a98: 31 96 adiw r30, 0x01 ; 1 + a9a: 90 81 ld r25, Z + a9c: 99 23 and r25, r25 + a9e: b1 f7 brne .-20 ; 0xa8c + aa0: 80 91 8d 01 lds r24, 0x018D + aa4: 90 91 8e 01 lds r25, 0x018E + aa8: 65 e0 ldi r22, 0x05 ; 5 + aaa: 70 e0 ldi r23, 0x00 ; 0 + aac: 0e 94 be 06 call 0xd7c ; 0xd7c <__udivmodhi4> + ab0: 80 93 84 01 sts 0x0184, r24 + ab4: 10 92 8b 01 sts 0x018B, r1 + ab8: 0f 90 pop r0 + aba: 0f 90 pop r0 + abc: 0f 90 pop r0 + abe: 0f 90 pop r0 + ac0: 0f 90 pop r0 + ac2: cf 91 pop r28 + ac4: df 91 pop r29 + ac6: 1f 91 pop r17 + ac8: 0f 91 pop r16 + aca: ff 90 pop r15 + acc: df 90 pop r13 + ace: cf 90 pop r12 + ad0: bf 90 pop r11 + ad2: af 90 pop r10 + ad4: 08 95 ret + +00000ad6 : + ad6: 1f 93 push r17 + ad8: cf 93 push r28 + ada: df 93 push r29 + adc: 10 91 85 01 lds r17, 0x0185 + ae0: 81 2f mov r24, r17 + ae2: 90 e0 ldi r25, 0x00 ; 0 + ae4: 44 e0 ldi r20, 0x04 ; 4 + ae6: 50 e0 ldi r21, 0x00 ; 0 + ae8: 48 1b sub r20, r24 + aea: 59 0b sbc r21, r25 + aec: ec 01 movw r28, r24 + aee: 24 97 sbiw r28, 0x04 ; 4 + af0: 80 91 8c 01 lds r24, 0x018C + af4: 30 91 8b 01 lds r19, 0x018B + af8: 20 91 84 01 lds r18, 0x0184 + afc: e2 2f mov r30, r18 + afe: f0 e0 ldi r31, 0x00 ; 0 + b00: ee 0f add r30, r30 + b02: ff 1f adc r31, r31 + b04: ee 0f add r30, r30 + b06: ff 1f adc r31, r31 + b08: e3 0f add r30, r19 + b0a: f1 1d adc r31, r1 + b0c: ee 0f add r30, r30 + b0e: ff 1f adc r31, r31 + b10: ee 0f add r30, r30 + b12: ff 1f adc r31, r31 + b14: ec 5c subi r30, 0xCC ; 204 + b16: fe 4f sbci r31, 0xFE ; 254 + b18: 90 e0 ldi r25, 0x00 ; 0 + b1a: dc 01 movw r26, r24 + b1c: ae 56 subi r26, 0x6E ; 110 + b1e: be 4f sbci r27, 0xFE ; 254 + b20: bc 01 movw r22, r24 + b22: 6a 56 subi r22, 0x6A ; 106 + b24: 7e 4f sbci r23, 0xFE ; 254 + b26: 80 81 ld r24, Z + b28: 28 2f mov r18, r24 + b2a: 30 e0 ldi r19, 0x00 ; 0 + b2c: 15 30 cpi r17, 0x05 ; 5 + b2e: 38 f4 brcc .+14 ; 0xb3e + b30: 04 2e mov r0, r20 + b32: 02 c0 rjmp .+4 ; 0xb38 + b34: 22 0f add r18, r18 + b36: 33 1f adc r19, r19 + b38: 0a 94 dec r0 + b3a: e2 f7 brpl .-8 ; 0xb34 + b3c: 06 c0 rjmp .+12 ; 0xb4a + b3e: 0c 2e mov r0, r28 + b40: 02 c0 rjmp .+4 ; 0xb46 + b42: 35 95 asr r19 + b44: 27 95 ror r18 + b46: 0a 94 dec r0 + b48: e2 f7 brpl .-8 ; 0xb42 + b4a: 8c 91 ld r24, X + b4c: 82 2b or r24, r18 + b4e: 8d 93 st X+, r24 + b50: 31 96 adiw r30, 0x01 ; 1 + b52: a6 17 cp r26, r22 + b54: b7 07 cpc r27, r23 + b56: 39 f7 brne .-50 ; 0xb26 + b58: 0e 94 10 04 call 0x820 ; 0x820 + b5c: 10 92 8c 01 sts 0x018C, r1 + b60: 10 92 8b 01 sts 0x018B, r1 + b64: 84 e0 ldi r24, 0x04 ; 4 + b66: 80 93 85 01 sts 0x0185, r24 + b6a: 80 91 91 01 lds r24, 0x0191 + b6e: 80 93 84 01 sts 0x0184, r24 + b72: 0e 94 76 02 call 0x4ec ; 0x4ec + b76: 81 30 cpi r24, 0x01 ; 1 + b78: 19 f0 breq .+6 ; 0xb80 + b7a: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + b7e: 02 c0 rjmp .+4 ; 0xb84 + b80: 0e 94 af 04 call 0x95e ; 0x95e + b84: df 91 pop r29 + b86: cf 91 pop r28 + b88: 1f 91 pop r17 + b8a: 08 95 ret + +00000b8c
: + b8c: 1f 93 push r17 + b8e: 23 9a sbi 0x04, 3 ; 4 + b90: 25 9a sbi 0x04, 5 ; 4 + b92: 24 9a sbi 0x04, 4 ; 4 + b94: 22 9a sbi 0x04, 2 ; 4 + b96: 81 e0 ldi r24, 0x01 ; 1 + b98: 60 91 31 01 lds r22, 0x0131 + b9c: 47 e0 ldi r20, 0x07 ; 7 + b9e: 0e 94 8c 01 call 0x318 ; 0x318 + ba2: 81 e0 ldi r24, 0x01 ; 1 + ba4: 60 91 2f 01 lds r22, 0x012F + ba8: 40 e0 ldi r20, 0x00 ; 0 + baa: 0e 94 8c 01 call 0x318 ; 0x318 + bae: 81 e0 ldi r24, 0x01 ; 1 + bb0: 60 91 32 01 lds r22, 0x0132 + bb4: 41 e0 ldi r20, 0x01 ; 1 + bb6: 0e 94 8c 01 call 0x318 ; 0x318 + bba: 81 e0 ldi r24, 0x01 ; 1 + bbc: 60 91 33 01 lds r22, 0x0133 + bc0: 40 e0 ldi r20, 0x00 ; 0 + bc2: 0e 94 8c 01 call 0x318 ; 0x318 + bc6: 10 e0 ldi r17, 0x00 ; 0 + bc8: 1f 5f subi r17, 0xFF ; 255 + bca: 81 e0 ldi r24, 0x01 ; 1 + bcc: 61 2f mov r22, r17 + bce: 40 e0 ldi r20, 0x00 ; 0 + bd0: 0e 94 8c 01 call 0x318 ; 0x318 + bd4: 18 30 cpi r17, 0x08 ; 8 + bd6: c1 f7 brne .-16 ; 0xbc8 + bd8: 81 e0 ldi r24, 0x01 ; 1 + bda: 60 91 30 01 lds r22, 0x0130 + bde: 4f e0 ldi r20, 0x0F ; 15 + be0: 0e 94 8c 01 call 0x318 ; 0x318 + be4: 87 e6 ldi r24, 0x67 ; 103 + be6: 90 e0 ldi r25, 0x00 ; 0 + be8: 90 93 c5 00 sts 0x00C5, r25 + bec: 80 93 c4 00 sts 0x00C4, r24 + bf0: 86 e0 ldi r24, 0x06 ; 6 + bf2: 80 93 c2 00 sts 0x00C2, r24 + bf6: 80 91 c1 00 lds r24, 0x00C1 + bfa: 88 61 ori r24, 0x18 ; 24 + bfc: 80 93 c1 00 sts 0x00C1, r24 + c00: 80 91 c1 00 lds r24, 0x00C1 + c04: 80 68 ori r24, 0x80 ; 128 + c06: 80 93 c1 00 sts 0x00C1, r24 + c0a: 78 94 sei + c0c: 8f ef ldi r24, 0xFF ; 255 + c0e: 80 93 9a 01 sts 0x019A, r24 + c12: 80 91 8d 01 lds r24, 0x018D + c16: 83 70 andi r24, 0x03 ; 3 + c18: 80 93 84 01 sts 0x0184, r24 + c1c: e2 e1 ldi r30, 0x12 ; 18 + c1e: f1 e0 ldi r31, 0x01 ; 1 + c20: 07 c0 rjmp .+14 ; 0xc30 + c22: 80 91 c0 00 lds r24, 0x00C0 + c26: 85 ff sbrs r24, 5 + c28: fc cf rjmp .-8 ; 0xc22 + c2a: 90 93 c6 00 sts 0x00C6, r25 + c2e: 31 96 adiw r30, 0x01 ; 1 + c30: 90 81 ld r25, Z + c32: 99 23 and r25, r25 + c34: b1 f7 brne .-20 ; 0xc22 + c36: 60 91 8d 01 lds r22, 0x018D + c3a: 70 91 8e 01 lds r23, 0x018E + c3e: 80 91 8f 01 lds r24, 0x018F + c42: 90 91 90 01 lds r25, 0x0190 + c46: 20 e2 ldi r18, 0x20 ; 32 + c48: 3e e4 ldi r19, 0x4E ; 78 + c4a: 40 e0 ldi r20, 0x00 ; 0 + c4c: 50 e0 ldi r21, 0x00 ; 0 + c4e: 0e 94 e5 06 call 0xdca ; 0xdca <__udivmodsi4> + c52: 61 15 cp r22, r1 + c54: 71 05 cpc r23, r1 + c56: 81 05 cpc r24, r1 + c58: 91 05 cpc r25, r1 + c5a: 09 f5 brne .+66 ; 0xc9e + c5c: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + c60: 0e 94 2d 02 call 0x45a ; 0x45a + c64: 81 30 cpi r24, 0x01 ; 1 + c66: 31 f0 breq .+12 ; 0xc74 + c68: 80 91 8c 01 lds r24, 0x018C + c6c: 8f 5f subi r24, 0xFF ; 255 + c6e: 80 93 8c 01 sts 0x018C, r24 + c72: 15 c0 rjmp .+42 ; 0xc9e + c74: 90 91 9b 01 lds r25, 0x019B + c78: 80 91 91 01 lds r24, 0x0191 + c7c: 98 17 cp r25, r24 + c7e: 19 f4 brne .+6 ; 0xc86 + c80: 9f 5f subi r25, 0xFF ; 255 + c82: 90 93 91 01 sts 0x0191, r25 + c86: 80 91 91 01 lds r24, 0x0191 + c8a: 86 30 cpi r24, 0x06 ; 6 + c8c: 10 f0 brcs .+4 ; 0xc92 + c8e: 10 92 91 01 sts 0x0191, r1 + c92: 80 91 91 01 lds r24, 0x0191 + c96: 80 93 9b 01 sts 0x019B, r24 + c9a: 0e 94 6b 05 call 0xad6 ; 0xad6 + c9e: 20 91 8d 01 lds r18, 0x018D + ca2: 30 91 8e 01 lds r19, 0x018E + ca6: 40 91 8f 01 lds r20, 0x018F + caa: 50 91 90 01 lds r21, 0x0190 + cae: 2f 5f subi r18, 0xFF ; 255 + cb0: 3f 4f sbci r19, 0xFF ; 255 + cb2: 4f 4f sbci r20, 0xFF ; 255 + cb4: 5f 4f sbci r21, 0xFF ; 255 + cb6: 20 93 8d 01 sts 0x018D, r18 + cba: 30 93 8e 01 sts 0x018E, r19 + cbe: 40 93 8f 01 sts 0x018F, r20 + cc2: 50 93 90 01 sts 0x0190, r21 + cc6: 90 91 9d 01 lds r25, 0x019D + cca: 80 91 9c 01 lds r24, 0x019C + cce: 98 17 cp r25, r24 + cd0: 09 f4 brne .+2 ; 0xcd4 + cd2: b1 cf rjmp .-158 ; 0xc36 + cd4: 80 91 9d 01 lds r24, 0x019D + cd8: 80 93 9c 01 sts 0x019C, r24 + cdc: 82 2f mov r24, r18 + cde: 83 70 andi r24, 0x03 ; 3 + ce0: 80 93 91 01 sts 0x0191, r24 + ce4: 80 91 9d 01 lds r24, 0x019D + ce8: 83 34 cpi r24, 0x43 ; 67 + cea: 69 f4 brne .+26 ; 0xd06 + cec: 0e 94 36 03 call 0x66c ; 0x66c + cf0: 81 30 cpi r24, 0x01 ; 1 + cf2: 29 f0 breq .+10 ; 0xcfe + cf4: 80 91 85 01 lds r24, 0x0185 + cf8: 8f 5f subi r24, 0xFF ; 255 + cfa: 80 93 85 01 sts 0x0185, r24 + cfe: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d02: 0e 94 05 01 call 0x20a ; 0x20a + d06: 80 91 9d 01 lds r24, 0x019D + d0a: 84 34 cpi r24, 0x44 ; 68 + d0c: 69 f4 brne .+26 ; 0xd28 + d0e: 0e 94 bf 02 call 0x57e ; 0x57e + d12: 81 30 cpi r24, 0x01 ; 1 + d14: 29 f0 breq .+10 ; 0xd20 + d16: 80 91 85 01 lds r24, 0x0185 + d1a: 81 50 subi r24, 0x01 ; 1 + d1c: 80 93 85 01 sts 0x0185, r24 + d20: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d24: 0e 94 05 01 call 0x20a ; 0x20a + d28: 80 91 9d 01 lds r24, 0x019D + d2c: 82 34 cpi r24, 0x42 ; 66 + d2e: 69 f4 brne .+26 ; 0xd4a + d30: 0e 94 2d 02 call 0x45a ; 0x45a + d34: 81 30 cpi r24, 0x01 ; 1 + d36: 29 f0 breq .+10 ; 0xd42 + d38: 80 91 8c 01 lds r24, 0x018C + d3c: 8f 5f subi r24, 0xFF ; 255 + d3e: 80 93 8c 01 sts 0x018C, r24 + d42: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d46: 0e 94 05 01 call 0x20a ; 0x20a + d4a: 80 91 9d 01 lds r24, 0x019D + d4e: 81 34 cpi r24, 0x41 ; 65 + d50: 91 f4 brne .+36 ; 0xd76 + d52: 0e 94 ad 03 call 0x75a ; 0x75a + d56: 81 30 cpi r24, 0x01 ; 1 + d58: 71 f0 breq .+28 ; 0xd76 + d5a: 80 91 8b 01 lds r24, 0x018B + d5e: 83 30 cpi r24, 0x03 ; 3 + d60: 20 f4 brcc .+8 ; 0xd6a + d62: 8f 5f subi r24, 0xFF ; 255 + d64: 80 93 8b 01 sts 0x018B, r24 + d68: 02 c0 rjmp .+4 ; 0xd6e + d6a: 10 92 8b 01 sts 0x018B, r1 + d6e: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d72: 0e 94 05 01 call 0x20a ; 0x20a + d76: 10 92 9d 01 sts 0x019D, r1 + d7a: 5d cf rjmp .-326 ; 0xc36 + +00000d7c <__udivmodhi4>: + d7c: aa 1b sub r26, r26 + d7e: bb 1b sub r27, r27 + d80: 51 e1 ldi r21, 0x11 ; 17 + d82: 07 c0 rjmp .+14 ; 0xd92 <__udivmodhi4_ep> + +00000d84 <__udivmodhi4_loop>: + d84: aa 1f adc r26, r26 + d86: bb 1f adc r27, r27 + d88: a6 17 cp r26, r22 + d8a: b7 07 cpc r27, r23 + d8c: 10 f0 brcs .+4 ; 0xd92 <__udivmodhi4_ep> + d8e: a6 1b sub r26, r22 + d90: b7 0b sbc r27, r23 + +00000d92 <__udivmodhi4_ep>: + d92: 88 1f adc r24, r24 + d94: 99 1f adc r25, r25 + d96: 5a 95 dec r21 + d98: a9 f7 brne .-22 ; 0xd84 <__udivmodhi4_loop> + d9a: 80 95 com r24 + d9c: 90 95 com r25 + d9e: bc 01 movw r22, r24 + da0: cd 01 movw r24, r26 + da2: 08 95 ret + +00000da4 <__divmodhi4>: + da4: 97 fb bst r25, 7 + da6: 09 2e mov r0, r25 + da8: 07 26 eor r0, r23 + daa: 0a d0 rcall .+20 ; 0xdc0 <__divmodhi4_neg1> + dac: 77 fd sbrc r23, 7 + dae: 04 d0 rcall .+8 ; 0xdb8 <__divmodhi4_neg2> + db0: e5 df rcall .-54 ; 0xd7c <__udivmodhi4> + db2: 06 d0 rcall .+12 ; 0xdc0 <__divmodhi4_neg1> + db4: 00 20 and r0, r0 + db6: 1a f4 brpl .+6 ; 0xdbe <__divmodhi4_exit> + +00000db8 <__divmodhi4_neg2>: + db8: 70 95 com r23 + dba: 61 95 neg r22 + dbc: 7f 4f sbci r23, 0xFF ; 255 + +00000dbe <__divmodhi4_exit>: + dbe: 08 95 ret + +00000dc0 <__divmodhi4_neg1>: + dc0: f6 f7 brtc .-4 ; 0xdbe <__divmodhi4_exit> + dc2: 90 95 com r25 + dc4: 81 95 neg r24 + dc6: 9f 4f sbci r25, 0xFF ; 255 + dc8: 08 95 ret + +00000dca <__udivmodsi4>: + dca: a1 e2 ldi r26, 0x21 ; 33 + dcc: 1a 2e mov r1, r26 + dce: aa 1b sub r26, r26 + dd0: bb 1b sub r27, r27 + dd2: fd 01 movw r30, r26 + dd4: 0d c0 rjmp .+26 ; 0xdf0 <__udivmodsi4_ep> + +00000dd6 <__udivmodsi4_loop>: + dd6: aa 1f adc r26, r26 + dd8: bb 1f adc r27, r27 + dda: ee 1f adc r30, r30 + ddc: ff 1f adc r31, r31 + dde: a2 17 cp r26, r18 + de0: b3 07 cpc r27, r19 + de2: e4 07 cpc r30, r20 + de4: f5 07 cpc r31, r21 + de6: 20 f0 brcs .+8 ; 0xdf0 <__udivmodsi4_ep> + de8: a2 1b sub r26, r18 + dea: b3 0b sbc r27, r19 + dec: e4 0b sbc r30, r20 + dee: f5 0b sbc r31, r21 + +00000df0 <__udivmodsi4_ep>: + df0: 66 1f adc r22, r22 + df2: 77 1f adc r23, r23 + df4: 88 1f adc r24, r24 + df6: 99 1f adc r25, r25 + df8: 1a 94 dec r1 + dfa: 69 f7 brne .-38 ; 0xdd6 <__udivmodsi4_loop> + dfc: 60 95 com r22 + dfe: 70 95 com r23 + e00: 80 95 com r24 + e02: 90 95 com r25 + e04: 9b 01 movw r18, r22 + e06: ac 01 movw r20, r24 + e08: bd 01 movw r22, r26 + e0a: cf 01 movw r24, r30 + e0c: 08 95 ret + +00000e0e <_exit>: + e0e: f8 94 cli + +00000e10 <__stop_program>: + e10: ff cf rjmp .-2 ; 0xe10 <__stop_program> diff --git a/compiled.lst b/compiled.lst new file mode 100644 index 0000000..57e0d88 --- /dev/null +++ b/compiled.lst @@ -0,0 +1,1716 @@ + +compiled.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 0000008a 00800100 00000e12 00000ea6 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00000e12 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 00000014 0080018a 0080018a 00000f30 2**0 + ALLOC + 3 .stab 000006b4 00000000 00000000 00000f30 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 00000054 00000000 00000000 000015e4 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> + 4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 14: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 18: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 1c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 20: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 24: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 28: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 2c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 30: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 34: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 38: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 3c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 40: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 44: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 48: 0c 94 75 00 jmp 0xea ; 0xea <__vector_18> + 4c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 50: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 54: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 58: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 5c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 60: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 64: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + +00000068 <__ctors_end>: + 68: 11 24 eor r1, r1 + 6a: 1f be out 0x3f, r1 ; 63 + 6c: cf ef ldi r28, 0xFF ; 255 + 6e: d4 e0 ldi r29, 0x04 ; 4 + 70: de bf out 0x3e, r29 ; 62 + 72: cd bf out 0x3d, r28 ; 61 + +00000074 <__do_copy_data>: + 74: 11 e0 ldi r17, 0x01 ; 1 + 76: a0 e0 ldi r26, 0x00 ; 0 + 78: b1 e0 ldi r27, 0x01 ; 1 + 7a: e2 e1 ldi r30, 0x12 ; 18 + 7c: fe e0 ldi r31, 0x0E ; 14 + 7e: 02 c0 rjmp .+4 ; 0x84 <.do_copy_data_start> + +00000080 <.do_copy_data_loop>: + 80: 05 90 lpm r0, Z+ + 82: 0d 92 st X+, r0 + +00000084 <.do_copy_data_start>: + 84: aa 38 cpi r26, 0x8A ; 138 + 86: b1 07 cpc r27, r17 + 88: d9 f7 brne .-10 ; 0x80 <.do_copy_data_loop> + +0000008a <__do_clear_bss>: + 8a: 11 e0 ldi r17, 0x01 ; 1 + 8c: aa e8 ldi r26, 0x8A ; 138 + 8e: b1 e0 ldi r27, 0x01 ; 1 + 90: 01 c0 rjmp .+2 ; 0x94 <.do_clear_bss_start> + +00000092 <.do_clear_bss_loop>: + 92: 1d 92 st X+, r1 + +00000094 <.do_clear_bss_start>: + 94: ae 39 cpi r26, 0x9E ; 158 + 96: b1 07 cpc r27, r17 + 98: e1 f7 brne .-8 ; 0x92 <.do_clear_bss_loop> + 9a: 0e 94 c6 05 call 0xb8c ; 0xb8c
+ 9e: 0c 94 07 07 jmp 0xe0e ; 0xe0e <_exit> + +000000a2 <__bad_interrupt>: + a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000a6 : + a6: e1 ec ldi r30, 0xC1 ; 193 + a8: f0 e0 ldi r31, 0x00 ; 0 + aa: 80 81 ld r24, Z + ac: 80 68 ori r24, 0x80 ; 128 + ae: 80 83 st Z, r24 + b0: 08 95 ret + +000000b2 : + b2: 90 93 c5 00 sts 0x00C5, r25 + b6: 80 93 c4 00 sts 0x00C4, r24 + ba: 86 e0 ldi r24, 0x06 ; 6 + bc: 80 93 c2 00 sts 0x00C2, r24 + c0: e1 ec ldi r30, 0xC1 ; 193 + c2: f0 e0 ldi r31, 0x00 ; 0 + c4: 80 81 ld r24, Z + c6: 88 61 ori r24, 0x18 ; 24 + c8: 80 83 st Z, r24 + ca: 08 95 ret + +000000cc : + cc: 80 91 c0 00 lds r24, 0x00C0 + d0: 87 ff sbrs r24, 7 + d2: fc cf rjmp .-8 ; 0xcc + d4: 80 91 c6 00 lds r24, 0x00C6 + d8: 08 95 ret + +000000da : + da: 98 2f mov r25, r24 + dc: 80 91 c0 00 lds r24, 0x00C0 + e0: 85 ff sbrs r24, 5 + e2: fc cf rjmp .-8 ; 0xdc + e4: 90 93 c6 00 sts 0x00C6, r25 + e8: 08 95 ret + +000000ea <__vector_18>: + ea: 1f 92 push r1 + ec: 0f 92 push r0 + ee: 0f b6 in r0, 0x3f ; 63 + f0: 0f 92 push r0 + f2: 11 24 eor r1, r1 + f4: 8f 93 push r24 + f6: df 93 push r29 + f8: cf 93 push r28 + fa: 0f 92 push r0 + fc: cd b7 in r28, 0x3d ; 61 + fe: de b7 in r29, 0x3e ; 62 + 100: 80 91 c6 00 lds r24, 0x00C6 + 104: 89 83 std Y+1, r24 ; 0x01 + 106: 89 81 ldd r24, Y+1 ; 0x01 + 108: 80 93 9d 01 sts 0x019D, r24 + 10c: 0f 90 pop r0 + 10e: cf 91 pop r28 + 110: df 91 pop r29 + 112: 8f 91 pop r24 + 114: 0f 90 pop r0 + 116: 0f be out 0x3f, r0 ; 63 + 118: 0f 90 pop r0 + 11a: 1f 90 pop r1 + 11c: 18 95 reti + +0000011e : + 11e: fc 01 movw r30, r24 + 120: 07 c0 rjmp .+14 ; 0x130 + 122: 80 91 c0 00 lds r24, 0x00C0 + 126: 85 ff sbrs r24, 5 + 128: fc cf rjmp .-8 ; 0x122 + 12a: 90 93 c6 00 sts 0x00C6, r25 + 12e: 31 96 adiw r30, 0x01 ; 1 + 130: 90 81 ld r25, Z + 132: 99 23 and r25, r25 + 134: b1 f7 brne .-20 ; 0x122 + 136: 08 95 ret + +00000138 : + 138: cf 93 push r28 + 13a: df 93 push r29 + 13c: ec 01 movw r28, r24 + 13e: 28 ee ldi r18, 0xE8 ; 232 + 140: 33 e0 ldi r19, 0x03 ; 3 + 142: e0 e0 ldi r30, 0x00 ; 0 + 144: f0 e0 ldi r31, 0x00 ; 0 + 146: ce 01 movw r24, r28 + 148: b9 01 movw r22, r18 + 14a: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + 14e: 46 2f mov r20, r22 + 150: 80 91 c0 00 lds r24, 0x00C0 + 154: 85 ff sbrs r24, 5 + 156: fc cf rjmp .-8 ; 0x150 + 158: 40 5d subi r20, 0xD0 ; 208 + 15a: 40 93 c6 00 sts 0x00C6, r20 + 15e: 40 53 subi r20, 0x30 ; 48 + 160: c9 01 movw r24, r18 + 162: 6a e0 ldi r22, 0x0A ; 10 + 164: 70 e0 ldi r23, 0x00 ; 0 + 166: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + 16a: 31 96 adiw r30, 0x01 ; 1 + 16c: e4 30 cpi r30, 0x04 ; 4 + 16e: f1 05 cpc r31, r1 + 170: 71 f0 breq .+28 ; 0x18e + 172: 84 2f mov r24, r20 + 174: 90 e0 ldi r25, 0x00 ; 0 + 176: ac 01 movw r20, r24 + 178: 42 9f mul r20, r18 + 17a: c0 01 movw r24, r0 + 17c: 43 9f mul r20, r19 + 17e: 90 0d add r25, r0 + 180: 52 9f mul r21, r18 + 182: 90 0d add r25, r0 + 184: 11 24 eor r1, r1 + 186: c8 1b sub r28, r24 + 188: d9 0b sbc r29, r25 + 18a: 9b 01 movw r18, r22 + 18c: dc cf rjmp .-72 ; 0x146 + 18e: df 91 pop r29 + 190: cf 91 pop r28 + 192: 08 95 ret + +00000194 : + 194: df 93 push r29 + 196: cf 93 push r28 + 198: 00 d0 rcall .+0 ; 0x19a + 19a: cd b7 in r28, 0x3d ; 61 + 19c: de b7 in r29, 0x3e ; 62 + 19e: 9c 01 movw r18, r24 + 1a0: 0f c0 rjmp .+30 ; 0x1c0 + 1a2: 1a 82 std Y+2, r1 ; 0x02 + 1a4: 19 82 std Y+1, r1 ; 0x01 + 1a6: 05 c0 rjmp .+10 ; 0x1b2 + 1a8: 89 81 ldd r24, Y+1 ; 0x01 + 1aa: 9a 81 ldd r25, Y+2 ; 0x02 + 1ac: 01 96 adiw r24, 0x01 ; 1 + 1ae: 9a 83 std Y+2, r25 ; 0x02 + 1b0: 89 83 std Y+1, r24 ; 0x01 + 1b2: 89 81 ldd r24, Y+1 ; 0x01 + 1b4: 9a 81 ldd r25, Y+2 ; 0x02 + 1b6: 8b 35 cpi r24, 0x5B ; 91 + 1b8: 91 05 cpc r25, r1 + 1ba: b1 f7 brne .-20 ; 0x1a8 + 1bc: 21 50 subi r18, 0x01 ; 1 + 1be: 30 40 sbci r19, 0x00 ; 0 + 1c0: 21 15 cp r18, r1 + 1c2: 31 05 cpc r19, r1 + 1c4: 71 f7 brne .-36 ; 0x1a2 + 1c6: 0f 90 pop r0 + 1c8: 0f 90 pop r0 + 1ca: cf 91 pop r28 + 1cc: df 91 pop r29 + 1ce: 08 95 ret + +000001d0 : + 1d0: df 93 push r29 + 1d2: cf 93 push r28 + 1d4: 00 d0 rcall .+0 ; 0x1d6 + 1d6: cd b7 in r28, 0x3d ; 61 + 1d8: de b7 in r29, 0x3e ; 62 + 1da: 9c 01 movw r18, r24 + 1dc: 0e c0 rjmp .+28 ; 0x1fa + 1de: 1a 82 std Y+2, r1 ; 0x02 + 1e0: 19 82 std Y+1, r1 ; 0x01 + 1e2: 05 c0 rjmp .+10 ; 0x1ee + 1e4: 89 81 ldd r24, Y+1 ; 0x01 + 1e6: 9a 81 ldd r25, Y+2 ; 0x02 + 1e8: 01 96 adiw r24, 0x01 ; 1 + 1ea: 9a 83 std Y+2, r25 ; 0x02 + 1ec: 89 83 std Y+1, r24 ; 0x01 + 1ee: 89 81 ldd r24, Y+1 ; 0x01 + 1f0: 9a 81 ldd r25, Y+2 ; 0x02 + 1f2: 09 97 sbiw r24, 0x09 ; 9 + 1f4: b9 f7 brne .-18 ; 0x1e4 + 1f6: 21 50 subi r18, 0x01 ; 1 + 1f8: 30 40 sbci r19, 0x00 ; 0 + 1fa: 21 15 cp r18, r1 + 1fc: 31 05 cpc r19, r1 + 1fe: 79 f7 brne .-34 ; 0x1de + 200: 0f 90 pop r0 + 202: 0f 90 pop r0 + 204: cf 91 pop r28 + 206: df 91 pop r29 + 208: 08 95 ret + +0000020a : + 20a: df 93 push r29 + 20c: cf 93 push r28 + 20e: 00 d0 rcall .+0 ; 0x210 + 210: cd b7 in r28, 0x3d ; 61 + 212: de b7 in r29, 0x3e ; 62 + 214: 40 e0 ldi r20, 0x00 ; 0 + 216: 2a 9a sbi 0x05, 2 ; 5 + 218: 21 e0 ldi r18, 0x01 ; 1 + 21a: 30 e0 ldi r19, 0x00 ; 0 + 21c: 1a 82 std Y+2, r1 ; 0x02 + 21e: 19 82 std Y+1, r1 ; 0x01 + 220: 05 c0 rjmp .+10 ; 0x22c + 222: 89 81 ldd r24, Y+1 ; 0x01 + 224: 9a 81 ldd r25, Y+2 ; 0x02 + 226: 01 96 adiw r24, 0x01 ; 1 + 228: 9a 83 std Y+2, r25 ; 0x02 + 22a: 89 83 std Y+1, r24 ; 0x01 + 22c: 89 81 ldd r24, Y+1 ; 0x01 + 22e: 9a 81 ldd r25, Y+2 ; 0x02 + 230: 8b 35 cpi r24, 0x5B ; 91 + 232: 91 05 cpc r25, r1 + 234: b1 f7 brne .-20 ; 0x222 + 236: 21 50 subi r18, 0x01 ; 1 + 238: 30 40 sbci r19, 0x00 ; 0 + 23a: 81 f7 brne .-32 ; 0x21c + 23c: 2a 98 cbi 0x05, 2 ; 5 + 23e: 21 e0 ldi r18, 0x01 ; 1 + 240: 30 e0 ldi r19, 0x00 ; 0 + 242: 1a 82 std Y+2, r1 ; 0x02 + 244: 19 82 std Y+1, r1 ; 0x01 + 246: 05 c0 rjmp .+10 ; 0x252 + 248: 89 81 ldd r24, Y+1 ; 0x01 + 24a: 9a 81 ldd r25, Y+2 ; 0x02 + 24c: 01 96 adiw r24, 0x01 ; 1 + 24e: 9a 83 std Y+2, r25 ; 0x02 + 250: 89 83 std Y+1, r24 ; 0x01 + 252: 89 81 ldd r24, Y+1 ; 0x01 + 254: 9a 81 ldd r25, Y+2 ; 0x02 + 256: 8b 35 cpi r24, 0x5B ; 91 + 258: 91 05 cpc r25, r1 + 25a: b1 f7 brne .-20 ; 0x248 + 25c: 21 50 subi r18, 0x01 ; 1 + 25e: 30 40 sbci r19, 0x00 ; 0 + 260: 81 f7 brne .-32 ; 0x242 + 262: 4f 5f subi r20, 0xFF ; 255 + 264: 44 36 cpi r20, 0x64 ; 100 + 266: b9 f6 brne .-82 ; 0x216 + 268: 0f 90 pop r0 + 26a: 0f 90 pop r0 + 26c: cf 91 pop r28 + 26e: df 91 pop r29 + 270: 08 95 ret + +00000272 : + 272: df 93 push r29 + 274: cf 93 push r28 + 276: 00 d0 rcall .+0 ; 0x278 + 278: cd b7 in r28, 0x3d ; 61 + 27a: de b7 in r29, 0x3e ; 62 + 27c: 41 e0 ldi r20, 0x01 ; 1 + 27e: 50 e0 ldi r21, 0x00 ; 0 + 280: 2a c0 rjmp .+84 ; 0x2d6 + 282: 2a 9a sbi 0x05, 2 ; 5 + 284: 9a 01 movw r18, r20 + 286: 1a 82 std Y+2, r1 ; 0x02 + 288: 19 82 std Y+1, r1 ; 0x01 + 28a: 05 c0 rjmp .+10 ; 0x296 + 28c: 89 81 ldd r24, Y+1 ; 0x01 + 28e: 9a 81 ldd r25, Y+2 ; 0x02 + 290: 01 96 adiw r24, 0x01 ; 1 + 292: 9a 83 std Y+2, r25 ; 0x02 + 294: 89 83 std Y+1, r24 ; 0x01 + 296: 89 81 ldd r24, Y+1 ; 0x01 + 298: 9a 81 ldd r25, Y+2 ; 0x02 + 29a: 09 97 sbiw r24, 0x09 ; 9 + 29c: b9 f7 brne .-18 ; 0x28c + 29e: 21 50 subi r18, 0x01 ; 1 + 2a0: 30 40 sbci r19, 0x00 ; 0 + 2a2: 89 f7 brne .-30 ; 0x286 + 2a4: 2a 98 cbi 0x05, 2 ; 5 + 2a6: 9a 01 movw r18, r20 + 2a8: 1a 82 std Y+2, r1 ; 0x02 + 2aa: 19 82 std Y+1, r1 ; 0x01 + 2ac: 05 c0 rjmp .+10 ; 0x2b8 + 2ae: 89 81 ldd r24, Y+1 ; 0x01 + 2b0: 9a 81 ldd r25, Y+2 ; 0x02 + 2b2: 01 96 adiw r24, 0x01 ; 1 + 2b4: 9a 83 std Y+2, r25 ; 0x02 + 2b6: 89 83 std Y+1, r24 ; 0x01 + 2b8: 89 81 ldd r24, Y+1 ; 0x01 + 2ba: 9a 81 ldd r25, Y+2 ; 0x02 + 2bc: 09 97 sbiw r24, 0x09 ; 9 + 2be: b9 f7 brne .-18 ; 0x2ae + 2c0: 21 50 subi r18, 0x01 ; 1 + 2c2: 30 40 sbci r19, 0x00 ; 0 + 2c4: 89 f7 brne .-30 ; 0x2a8 + 2c6: 6f 5f subi r22, 0xFF ; 255 + 2c8: 64 36 cpi r22, 0x64 ; 100 + 2ca: d9 f6 brne .-74 ; 0x282 + 2cc: 46 5f subi r20, 0xF6 ; 246 + 2ce: 5f 4f sbci r21, 0xFF ; 255 + 2d0: 49 32 cpi r20, 0x29 ; 41 + 2d2: 51 05 cpc r21, r1 + 2d4: 11 f0 breq .+4 ; 0x2da + 2d6: 60 e0 ldi r22, 0x00 ; 0 + 2d8: d4 cf rjmp .-88 ; 0x282 + 2da: 0f 90 pop r0 + 2dc: 0f 90 pop r0 + 2de: cf 91 pop r28 + 2e0: df 91 pop r29 + 2e2: 08 95 ret + +000002e4 : + 2e4: 68 2f mov r22, r24 + 2e6: 27 e0 ldi r18, 0x07 ; 7 + 2e8: 30 e0 ldi r19, 0x00 ; 0 + 2ea: 41 e0 ldi r20, 0x01 ; 1 + 2ec: 50 e0 ldi r21, 0x00 ; 0 + 2ee: 2c 98 cbi 0x05, 4 ; 5 + 2f0: ca 01 movw r24, r20 + 2f2: 02 2e mov r0, r18 + 2f4: 02 c0 rjmp .+4 ; 0x2fa + 2f6: 88 0f add r24, r24 + 2f8: 99 1f adc r25, r25 + 2fa: 0a 94 dec r0 + 2fc: e2 f7 brpl .-8 ; 0x2f6 + 2fe: 86 23 and r24, r22 + 300: 11 f0 breq .+4 ; 0x306 + 302: 2b 9a sbi 0x05, 3 ; 5 + 304: 01 c0 rjmp .+2 ; 0x308 + 306: 2b 98 cbi 0x05, 3 ; 5 + 308: 2c 9a sbi 0x05, 4 ; 5 + 30a: 21 50 subi r18, 0x01 ; 1 + 30c: 30 40 sbci r19, 0x00 ; 0 + 30e: 8f ef ldi r24, 0xFF ; 255 + 310: 2f 3f cpi r18, 0xFF ; 255 + 312: 38 07 cpc r19, r24 + 314: 61 f7 brne .-40 ; 0x2ee + 316: 08 95 ret + +00000318 : + 318: 0f 93 push r16 + 31a: 1f 93 push r17 + 31c: cf 93 push r28 + 31e: df 93 push r29 + 320: 16 2f mov r17, r22 + 322: 04 2f mov r16, r20 + 324: 2d 98 cbi 0x05, 5 ; 5 + 326: 21 e0 ldi r18, 0x01 ; 1 + 328: 30 e0 ldi r19, 0x00 ; 0 + 32a: c8 2f mov r28, r24 + 32c: d0 e0 ldi r29, 0x00 ; 0 + 32e: 08 c0 rjmp .+16 ; 0x340 + 330: 80 e0 ldi r24, 0x00 ; 0 + 332: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 336: 80 e0 ldi r24, 0x00 ; 0 + 338: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 33c: 20 e0 ldi r18, 0x00 ; 0 + 33e: 30 e0 ldi r19, 0x00 ; 0 + 340: c2 17 cp r28, r18 + 342: d3 07 cpc r29, r19 + 344: ac f3 brlt .-22 ; 0x330 + 346: 81 2f mov r24, r17 + 348: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 34c: 80 2f mov r24, r16 + 34e: 04 c0 rjmp .+8 ; 0x358 + 350: 80 e0 ldi r24, 0x00 ; 0 + 352: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 356: 80 e0 ldi r24, 0x00 ; 0 + 358: 0e 94 72 01 call 0x2e4 ; 0x2e4 + 35c: 21 97 sbiw r28, 0x01 ; 1 + 35e: 1c 16 cp r1, r28 + 360: 1d 06 cpc r1, r29 + 362: b4 f3 brlt .-20 ; 0x350 + 364: 2d 98 cbi 0x05, 5 ; 5 + 366: 2d 9a sbi 0x05, 5 ; 5 + 368: df 91 pop r29 + 36a: cf 91 pop r28 + 36c: 1f 91 pop r17 + 36e: 0f 91 pop r16 + 370: 08 95 ret + +00000372 : + 372: 48 2f mov r20, r24 + 374: 50 e0 ldi r21, 0x00 ; 0 + 376: 26 2f mov r18, r22 + 378: 30 e0 ldi r19, 0x00 ; 0 + 37a: 65 30 cpi r22, 0x05 ; 5 + 37c: 58 f4 brcc .+22 ; 0x394 + 37e: 84 e0 ldi r24, 0x04 ; 4 + 380: 90 e0 ldi r25, 0x00 ; 0 + 382: 82 1b sub r24, r18 + 384: 93 0b sbc r25, r19 + 386: 02 c0 rjmp .+4 ; 0x38c + 388: 44 0f add r20, r20 + 38a: 55 1f adc r21, r21 + 38c: 8a 95 dec r24 + 38e: e2 f7 brpl .-8 ; 0x388 + 390: 84 2f mov r24, r20 + 392: 08 95 ret + 394: 24 50 subi r18, 0x04 ; 4 + 396: 30 40 sbci r19, 0x00 ; 0 + 398: 02 c0 rjmp .+4 ; 0x39e + 39a: 55 95 asr r21 + 39c: 47 95 ror r20 + 39e: 2a 95 dec r18 + 3a0: e2 f7 brpl .-8 ; 0x39a + 3a2: 84 2f mov r24, r20 + 3a4: 08 95 ret + +000003a6 : + 3a6: 0f 93 push r16 + 3a8: 1f 93 push r17 + 3aa: cf 93 push r28 + 3ac: df 93 push r29 + 3ae: c0 e0 ldi r28, 0x00 ; 0 + 3b0: d0 e0 ldi r29, 0x00 ; 0 + 3b2: 04 e0 ldi r16, 0x04 ; 4 + 3b4: 10 e0 ldi r17, 0x00 ; 0 + 3b6: 80 91 8c 01 lds r24, 0x018C + 3ba: 28 2f mov r18, r24 + 3bc: 30 e0 ldi r19, 0x00 ; 0 + 3be: c2 17 cp r28, r18 + 3c0: d3 07 cpc r29, r19 + 3c2: ec f0 brlt .+58 ; 0x3fe + 3c4: c9 01 movw r24, r18 + 3c6: 03 96 adiw r24, 0x03 ; 3 + 3c8: 8c 17 cp r24, r28 + 3ca: 9d 07 cpc r25, r29 + 3cc: c4 f0 brlt .+48 ; 0x3fe + 3ce: ce 01 movw r24, r28 + 3d0: 82 1b sub r24, r18 + 3d2: 93 0b sbc r25, r19 + 3d4: e0 91 84 01 lds r30, 0x0184 + 3d8: f0 e0 ldi r31, 0x00 ; 0 + 3da: 20 91 8b 01 lds r18, 0x018B + 3de: ee 0f add r30, r30 + 3e0: ff 1f adc r31, r31 + 3e2: ee 0f add r30, r30 + 3e4: ff 1f adc r31, r31 + 3e6: e2 0f add r30, r18 + 3e8: f1 1d adc r31, r1 + 3ea: ee 0f add r30, r30 + 3ec: ff 1f adc r31, r31 + 3ee: ee 0f add r30, r30 + 3f0: ff 1f adc r31, r31 + 3f2: e8 0f add r30, r24 + 3f4: f9 1f adc r31, r25 + 3f6: ec 5c subi r30, 0xCC ; 204 + 3f8: fe 4f sbci r31, 0xFE ; 254 + 3fa: e0 81 ld r30, Z + 3fc: 01 c0 rjmp .+2 ; 0x400 + 3fe: e0 e0 ldi r30, 0x00 ; 0 + 400: 80 91 85 01 lds r24, 0x0185 + 404: 4e 2f mov r20, r30 + 406: 50 e0 ldi r21, 0x00 ; 0 + 408: 28 2f mov r18, r24 + 40a: 30 e0 ldi r19, 0x00 ; 0 + 40c: 85 30 cpi r24, 0x05 ; 5 + 40e: 48 f4 brcc .+18 ; 0x422 + 410: c8 01 movw r24, r16 + 412: 82 1b sub r24, r18 + 414: 93 0b sbc r25, r19 + 416: 02 c0 rjmp .+4 ; 0x41c + 418: 44 0f add r20, r20 + 41a: 55 1f adc r21, r21 + 41c: 8a 95 dec r24 + 41e: e2 f7 brpl .-8 ; 0x418 + 420: 07 c0 rjmp .+14 ; 0x430 + 422: 24 50 subi r18, 0x04 ; 4 + 424: 30 40 sbci r19, 0x00 ; 0 + 426: 02 c0 rjmp .+4 ; 0x42c + 428: 55 95 asr r21 + 42a: 47 95 ror r20 + 42c: 2a 95 dec r18 + 42e: e2 f7 brpl .-8 ; 0x428 + 430: ce 01 movw r24, r28 + 432: 8f 5f subi r24, 0xFF ; 255 + 434: 68 2f mov r22, r24 + 436: fe 01 movw r30, r28 + 438: ee 56 subi r30, 0x6E ; 110 + 43a: fe 4f sbci r31, 0xFE ; 254 + 43c: 80 81 ld r24, Z + 43e: 48 2b or r20, r24 + 440: 81 e0 ldi r24, 0x01 ; 1 + 442: 0e 94 8c 01 call 0x318 ; 0x318 + 446: 21 96 adiw r28, 0x01 ; 1 + 448: c8 30 cpi r28, 0x08 ; 8 + 44a: d1 05 cpc r29, r1 + 44c: 09 f0 breq .+2 ; 0x450 + 44e: b3 cf rjmp .-154 ; 0x3b6 + 450: df 91 pop r29 + 452: cf 91 pop r28 + 454: 1f 91 pop r17 + 456: 0f 91 pop r16 + 458: 08 95 ret + +0000045a : + 45a: 1f 93 push r17 + 45c: cf 93 push r28 + 45e: df 93 push r29 + 460: 10 91 85 01 lds r17, 0x0185 + 464: 81 2f mov r24, r17 + 466: 90 e0 ldi r25, 0x00 ; 0 + 468: 44 e0 ldi r20, 0x04 ; 4 + 46a: 50 e0 ldi r21, 0x00 ; 0 + 46c: 48 1b sub r20, r24 + 46e: 59 0b sbc r21, r25 + 470: ec 01 movw r28, r24 + 472: 24 97 sbiw r28, 0x04 ; 4 + 474: 80 91 8c 01 lds r24, 0x018C + 478: 30 91 8b 01 lds r19, 0x018B + 47c: 20 91 84 01 lds r18, 0x0184 + 480: e2 2f mov r30, r18 + 482: f0 e0 ldi r31, 0x00 ; 0 + 484: ee 0f add r30, r30 + 486: ff 1f adc r31, r31 + 488: ee 0f add r30, r30 + 48a: ff 1f adc r31, r31 + 48c: e3 0f add r30, r19 + 48e: f1 1d adc r31, r1 + 490: ee 0f add r30, r30 + 492: ff 1f adc r31, r31 + 494: ee 0f add r30, r30 + 496: ff 1f adc r31, r31 + 498: ec 5c subi r30, 0xCC ; 204 + 49a: fe 4f sbci r31, 0xFE ; 254 + 49c: 90 e0 ldi r25, 0x00 ; 0 + 49e: dc 01 movw r26, r24 + 4a0: ad 56 subi r26, 0x6D ; 109 + 4a2: be 4f sbci r27, 0xFE ; 254 + 4a4: bc 01 movw r22, r24 + 4a6: 69 56 subi r22, 0x69 ; 105 + 4a8: 7e 4f sbci r23, 0xFE ; 254 + 4aa: 80 81 ld r24, Z + 4ac: 28 2f mov r18, r24 + 4ae: 30 e0 ldi r19, 0x00 ; 0 + 4b0: 15 30 cpi r17, 0x05 ; 5 + 4b2: 38 f4 brcc .+14 ; 0x4c2 + 4b4: 04 2e mov r0, r20 + 4b6: 02 c0 rjmp .+4 ; 0x4bc + 4b8: 22 0f add r18, r18 + 4ba: 33 1f adc r19, r19 + 4bc: 0a 94 dec r0 + 4be: e2 f7 brpl .-8 ; 0x4b8 + 4c0: 06 c0 rjmp .+12 ; 0x4ce + 4c2: 0c 2e mov r0, r28 + 4c4: 02 c0 rjmp .+4 ; 0x4ca + 4c6: 35 95 asr r19 + 4c8: 27 95 ror r18 + 4ca: 0a 94 dec r0 + 4cc: e2 f7 brpl .-8 ; 0x4c6 + 4ce: 8c 91 ld r24, X + 4d0: 28 23 and r18, r24 + 4d2: 11 f0 breq .+4 ; 0x4d8 + 4d4: 81 e0 ldi r24, 0x01 ; 1 + 4d6: 06 c0 rjmp .+12 ; 0x4e4 + 4d8: 31 96 adiw r30, 0x01 ; 1 + 4da: 11 96 adiw r26, 0x01 ; 1 + 4dc: a6 17 cp r26, r22 + 4de: b7 07 cpc r27, r23 + 4e0: 21 f7 brne .-56 ; 0x4aa + 4e2: 80 e0 ldi r24, 0x00 ; 0 + 4e4: df 91 pop r29 + 4e6: cf 91 pop r28 + 4e8: 1f 91 pop r17 + 4ea: 08 95 ret + +000004ec : + 4ec: 1f 93 push r17 + 4ee: cf 93 push r28 + 4f0: df 93 push r29 + 4f2: 10 91 85 01 lds r17, 0x0185 + 4f6: 81 2f mov r24, r17 + 4f8: 90 e0 ldi r25, 0x00 ; 0 + 4fa: 44 e0 ldi r20, 0x04 ; 4 + 4fc: 50 e0 ldi r21, 0x00 ; 0 + 4fe: 48 1b sub r20, r24 + 500: 59 0b sbc r21, r25 + 502: ec 01 movw r28, r24 + 504: 24 97 sbiw r28, 0x04 ; 4 + 506: 80 91 8c 01 lds r24, 0x018C + 50a: 30 91 8b 01 lds r19, 0x018B + 50e: 20 91 84 01 lds r18, 0x0184 + 512: e2 2f mov r30, r18 + 514: f0 e0 ldi r31, 0x00 ; 0 + 516: ee 0f add r30, r30 + 518: ff 1f adc r31, r31 + 51a: ee 0f add r30, r30 + 51c: ff 1f adc r31, r31 + 51e: e3 0f add r30, r19 + 520: f1 1d adc r31, r1 + 522: ee 0f add r30, r30 + 524: ff 1f adc r31, r31 + 526: ee 0f add r30, r30 + 528: ff 1f adc r31, r31 + 52a: ec 5c subi r30, 0xCC ; 204 + 52c: fe 4f sbci r31, 0xFE ; 254 + 52e: 90 e0 ldi r25, 0x00 ; 0 + 530: dc 01 movw r26, r24 + 532: ae 56 subi r26, 0x6E ; 110 + 534: be 4f sbci r27, 0xFE ; 254 + 536: bc 01 movw r22, r24 + 538: 6a 56 subi r22, 0x6A ; 106 + 53a: 7e 4f sbci r23, 0xFE ; 254 + 53c: 80 81 ld r24, Z + 53e: 28 2f mov r18, r24 + 540: 30 e0 ldi r19, 0x00 ; 0 + 542: 15 30 cpi r17, 0x05 ; 5 + 544: 38 f4 brcc .+14 ; 0x554 <__stack+0x55> + 546: 04 2e mov r0, r20 + 548: 02 c0 rjmp .+4 ; 0x54e <__stack+0x4f> + 54a: 22 0f add r18, r18 + 54c: 33 1f adc r19, r19 + 54e: 0a 94 dec r0 + 550: e2 f7 brpl .-8 ; 0x54a <__stack+0x4b> + 552: 06 c0 rjmp .+12 ; 0x560 <__stack+0x61> + 554: 0c 2e mov r0, r28 + 556: 02 c0 rjmp .+4 ; 0x55c <__stack+0x5d> + 558: 35 95 asr r19 + 55a: 27 95 ror r18 + 55c: 0a 94 dec r0 + 55e: e2 f7 brpl .-8 ; 0x558 <__stack+0x59> + 560: 8c 91 ld r24, X + 562: 28 23 and r18, r24 + 564: 11 f0 breq .+4 ; 0x56a <__stack+0x6b> + 566: 81 e0 ldi r24, 0x01 ; 1 + 568: 06 c0 rjmp .+12 ; 0x576 <__stack+0x77> + 56a: 31 96 adiw r30, 0x01 ; 1 + 56c: 11 96 adiw r26, 0x01 ; 1 + 56e: a6 17 cp r26, r22 + 570: b7 07 cpc r27, r23 + 572: 21 f7 brne .-56 ; 0x53c <__stack+0x3d> + 574: 80 e0 ldi r24, 0x00 ; 0 + 576: df 91 pop r29 + 578: cf 91 pop r28 + 57a: 1f 91 pop r17 + 57c: 08 95 ret + +0000057e : + 57e: bf 92 push r11 + 580: cf 92 push r12 + 582: df 92 push r13 + 584: ef 92 push r14 + 586: ff 92 push r15 + 588: 0f 93 push r16 + 58a: 1f 93 push r17 + 58c: cf 93 push r28 + 58e: df 93 push r29 + 590: 50 91 85 01 lds r21, 0x0185 + 594: 85 2f mov r24, r21 + 596: 90 e0 ldi r25, 0x00 ; 0 + 598: 24 e0 ldi r18, 0x04 ; 4 + 59a: 30 e0 ldi r19, 0x00 ; 0 + 59c: 69 01 movw r12, r18 + 59e: c8 1a sub r12, r24 + 5a0: d9 0a sbc r13, r25 + 5a2: 0c ef ldi r16, 0xFC ; 252 + 5a4: e0 2e mov r14, r16 + 5a6: 0f ef ldi r16, 0xFF ; 255 + 5a8: f0 2e mov r15, r16 + 5aa: e8 0e add r14, r24 + 5ac: f9 1e adc r15, r25 + 5ae: b5 2e mov r11, r21 + 5b0: ba 94 dec r11 + 5b2: 8b 2d mov r24, r11 + 5b4: 90 e0 ldi r25, 0x00 ; 0 + 5b6: 89 01 movw r16, r18 + 5b8: 08 1b sub r16, r24 + 5ba: 19 0b sbc r17, r25 + 5bc: ec 01 movw r28, r24 + 5be: 24 97 sbiw r28, 0x04 ; 4 + 5c0: 80 91 8c 01 lds r24, 0x018C + 5c4: 30 91 8b 01 lds r19, 0x018B + 5c8: 20 91 84 01 lds r18, 0x0184 + 5cc: e2 2f mov r30, r18 + 5ce: f0 e0 ldi r31, 0x00 ; 0 + 5d0: ee 0f add r30, r30 + 5d2: ff 1f adc r31, r31 + 5d4: ee 0f add r30, r30 + 5d6: ff 1f adc r31, r31 + 5d8: e3 0f add r30, r19 + 5da: f1 1d adc r31, r1 + 5dc: ee 0f add r30, r30 + 5de: ff 1f adc r31, r31 + 5e0: ee 0f add r30, r30 + 5e2: ff 1f adc r31, r31 + 5e4: ec 5c subi r30, 0xCC ; 204 + 5e6: fe 4f sbci r31, 0xFE ; 254 + 5e8: 90 e0 ldi r25, 0x00 ; 0 + 5ea: dc 01 movw r26, r24 + 5ec: ae 56 subi r26, 0x6E ; 110 + 5ee: be 4f sbci r27, 0xFE ; 254 + 5f0: bc 01 movw r22, r24 + 5f2: 6a 56 subi r22, 0x6A ; 106 + 5f4: 7e 4f sbci r23, 0xFE ; 254 + 5f6: 40 81 ld r20, Z + 5f8: 24 2f mov r18, r20 + 5fa: 30 e0 ldi r19, 0x00 ; 0 + 5fc: 55 30 cpi r21, 0x05 ; 5 + 5fe: 38 f4 brcc .+14 ; 0x60e + 600: 0c 2c mov r0, r12 + 602: 02 c0 rjmp .+4 ; 0x608 + 604: 22 0f add r18, r18 + 606: 33 1f adc r19, r19 + 608: 0a 94 dec r0 + 60a: e2 f7 brpl .-8 ; 0x604 + 60c: 06 c0 rjmp .+12 ; 0x61a + 60e: 0e 2c mov r0, r14 + 610: 02 c0 rjmp .+4 ; 0x616 + 612: 35 95 asr r19 + 614: 27 95 ror r18 + 616: 0a 94 dec r0 + 618: e2 f7 brpl .-8 ; 0x612 + 61a: 27 fd sbrc r18, 7 + 61c: 1c c0 rjmp .+56 ; 0x656 + 61e: 24 2f mov r18, r20 + 620: 30 e0 ldi r19, 0x00 ; 0 + 622: 84 e0 ldi r24, 0x04 ; 4 + 624: 8b 15 cp r24, r11 + 626: 38 f0 brcs .+14 ; 0x636 + 628: 00 2e mov r0, r16 + 62a: 02 c0 rjmp .+4 ; 0x630 + 62c: 22 0f add r18, r18 + 62e: 33 1f adc r19, r19 + 630: 0a 94 dec r0 + 632: e2 f7 brpl .-8 ; 0x62c + 634: 06 c0 rjmp .+12 ; 0x642 + 636: 0c 2e mov r0, r28 + 638: 02 c0 rjmp .+4 ; 0x63e + 63a: 35 95 asr r19 + 63c: 27 95 ror r18 + 63e: 0a 94 dec r0 + 640: e2 f7 brpl .-8 ; 0x63a + 642: 8c 91 ld r24, X + 644: 28 23 and r18, r24 + 646: 39 f4 brne .+14 ; 0x656 + 648: 31 96 adiw r30, 0x01 ; 1 + 64a: 11 96 adiw r26, 0x01 ; 1 + 64c: a6 17 cp r26, r22 + 64e: b7 07 cpc r27, r23 + 650: 91 f6 brne .-92 ; 0x5f6 + 652: 80 e0 ldi r24, 0x00 ; 0 + 654: 01 c0 rjmp .+2 ; 0x658 + 656: 81 e0 ldi r24, 0x01 ; 1 + 658: df 91 pop r29 + 65a: cf 91 pop r28 + 65c: 1f 91 pop r17 + 65e: 0f 91 pop r16 + 660: ff 90 pop r15 + 662: ef 90 pop r14 + 664: df 90 pop r13 + 666: cf 90 pop r12 + 668: bf 90 pop r11 + 66a: 08 95 ret + +0000066c : + 66c: bf 92 push r11 + 66e: cf 92 push r12 + 670: df 92 push r13 + 672: ef 92 push r14 + 674: ff 92 push r15 + 676: 0f 93 push r16 + 678: 1f 93 push r17 + 67a: cf 93 push r28 + 67c: df 93 push r29 + 67e: 50 91 85 01 lds r21, 0x0185 + 682: 85 2f mov r24, r21 + 684: 90 e0 ldi r25, 0x00 ; 0 + 686: 24 e0 ldi r18, 0x04 ; 4 + 688: 30 e0 ldi r19, 0x00 ; 0 + 68a: 69 01 movw r12, r18 + 68c: c8 1a sub r12, r24 + 68e: d9 0a sbc r13, r25 + 690: 4c ef ldi r20, 0xFC ; 252 + 692: e4 2e mov r14, r20 + 694: 4f ef ldi r20, 0xFF ; 255 + 696: f4 2e mov r15, r20 + 698: e8 0e add r14, r24 + 69a: f9 1e adc r15, r25 + 69c: b5 2e mov r11, r21 + 69e: b3 94 inc r11 + 6a0: 8b 2d mov r24, r11 + 6a2: 90 e0 ldi r25, 0x00 ; 0 + 6a4: 89 01 movw r16, r18 + 6a6: 08 1b sub r16, r24 + 6a8: 19 0b sbc r17, r25 + 6aa: ec 01 movw r28, r24 + 6ac: 24 97 sbiw r28, 0x04 ; 4 + 6ae: 80 91 8c 01 lds r24, 0x018C + 6b2: 30 91 8b 01 lds r19, 0x018B + 6b6: 20 91 84 01 lds r18, 0x0184 + 6ba: e2 2f mov r30, r18 + 6bc: f0 e0 ldi r31, 0x00 ; 0 + 6be: ee 0f add r30, r30 + 6c0: ff 1f adc r31, r31 + 6c2: ee 0f add r30, r30 + 6c4: ff 1f adc r31, r31 + 6c6: e3 0f add r30, r19 + 6c8: f1 1d adc r31, r1 + 6ca: ee 0f add r30, r30 + 6cc: ff 1f adc r31, r31 + 6ce: ee 0f add r30, r30 + 6d0: ff 1f adc r31, r31 + 6d2: ec 5c subi r30, 0xCC ; 204 + 6d4: fe 4f sbci r31, 0xFE ; 254 + 6d6: 90 e0 ldi r25, 0x00 ; 0 + 6d8: dc 01 movw r26, r24 + 6da: ae 56 subi r26, 0x6E ; 110 + 6dc: be 4f sbci r27, 0xFE ; 254 + 6de: bc 01 movw r22, r24 + 6e0: 6a 56 subi r22, 0x6A ; 106 + 6e2: 7e 4f sbci r23, 0xFE ; 254 + 6e4: 40 81 ld r20, Z + 6e6: 24 2f mov r18, r20 + 6e8: 30 e0 ldi r19, 0x00 ; 0 + 6ea: 55 30 cpi r21, 0x05 ; 5 + 6ec: 38 f4 brcc .+14 ; 0x6fc + 6ee: 0c 2c mov r0, r12 + 6f0: 02 c0 rjmp .+4 ; 0x6f6 + 6f2: 22 0f add r18, r18 + 6f4: 33 1f adc r19, r19 + 6f6: 0a 94 dec r0 + 6f8: e2 f7 brpl .-8 ; 0x6f2 + 6fa: 06 c0 rjmp .+12 ; 0x708 + 6fc: 0e 2c mov r0, r14 + 6fe: 02 c0 rjmp .+4 ; 0x704 + 700: 35 95 asr r19 + 702: 27 95 ror r18 + 704: 0a 94 dec r0 + 706: e2 f7 brpl .-8 ; 0x700 + 708: 20 fd sbrc r18, 0 + 70a: 1c c0 rjmp .+56 ; 0x744 + 70c: 24 2f mov r18, r20 + 70e: 30 e0 ldi r19, 0x00 ; 0 + 710: 84 e0 ldi r24, 0x04 ; 4 + 712: 8b 15 cp r24, r11 + 714: 38 f0 brcs .+14 ; 0x724 + 716: 00 2e mov r0, r16 + 718: 02 c0 rjmp .+4 ; 0x71e + 71a: 22 0f add r18, r18 + 71c: 33 1f adc r19, r19 + 71e: 0a 94 dec r0 + 720: e2 f7 brpl .-8 ; 0x71a + 722: 06 c0 rjmp .+12 ; 0x730 + 724: 0c 2e mov r0, r28 + 726: 02 c0 rjmp .+4 ; 0x72c + 728: 35 95 asr r19 + 72a: 27 95 ror r18 + 72c: 0a 94 dec r0 + 72e: e2 f7 brpl .-8 ; 0x728 + 730: 8c 91 ld r24, X + 732: 28 23 and r18, r24 + 734: 39 f4 brne .+14 ; 0x744 + 736: 31 96 adiw r30, 0x01 ; 1 + 738: 11 96 adiw r26, 0x01 ; 1 + 73a: a6 17 cp r26, r22 + 73c: b7 07 cpc r27, r23 + 73e: 91 f6 brne .-92 ; 0x6e4 + 740: 80 e0 ldi r24, 0x00 ; 0 + 742: 01 c0 rjmp .+2 ; 0x746 + 744: 81 e0 ldi r24, 0x01 ; 1 + 746: df 91 pop r29 + 748: cf 91 pop r28 + 74a: 1f 91 pop r17 + 74c: 0f 91 pop r16 + 74e: ff 90 pop r15 + 750: ef 90 pop r14 + 752: df 90 pop r13 + 754: cf 90 pop r12 + 756: bf 90 pop r11 + 758: 08 95 ret + +0000075a : + 75a: 0f 93 push r16 + 75c: 1f 93 push r17 + 75e: cf 93 push r28 + 760: df 93 push r29 + 762: 80 91 8b 01 lds r24, 0x018B + 766: 83 30 cpi r24, 0x03 ; 3 + 768: 10 f0 brcs .+4 ; 0x76e + 76a: 20 e0 ldi r18, 0x00 ; 0 + 76c: 02 c0 rjmp .+4 ; 0x772 + 76e: 28 2f mov r18, r24 + 770: 2f 5f subi r18, 0xFF ; 255 + 772: 50 91 84 01 lds r21, 0x0184 + 776: 40 91 85 01 lds r20, 0x0185 + 77a: 84 2f mov r24, r20 + 77c: 90 e0 ldi r25, 0x00 ; 0 + 77e: 64 e0 ldi r22, 0x04 ; 4 + 780: 70 e0 ldi r23, 0x00 ; 0 + 782: 68 1b sub r22, r24 + 784: 79 0b sbc r23, r25 + 786: 8c 01 movw r16, r24 + 788: 04 50 subi r16, 0x04 ; 4 + 78a: 10 40 sbci r17, 0x00 ; 0 + 78c: 80 91 8c 01 lds r24, 0x018C + 790: e5 2f mov r30, r21 + 792: f0 e0 ldi r31, 0x00 ; 0 + 794: ee 0f add r30, r30 + 796: ff 1f adc r31, r31 + 798: ee 0f add r30, r30 + 79a: ff 1f adc r31, r31 + 79c: e2 0f add r30, r18 + 79e: f1 1d adc r31, r1 + 7a0: ee 0f add r30, r30 + 7a2: ff 1f adc r31, r31 + 7a4: ee 0f add r30, r30 + 7a6: ff 1f adc r31, r31 + 7a8: ec 5c subi r30, 0xCC ; 204 + 7aa: fe 4f sbci r31, 0xFE ; 254 + 7ac: 90 e0 ldi r25, 0x00 ; 0 + 7ae: dc 01 movw r26, r24 + 7b0: ae 56 subi r26, 0x6E ; 110 + 7b2: be 4f sbci r27, 0xFE ; 254 + 7b4: ec 01 movw r28, r24 + 7b6: ca 56 subi r28, 0x6A ; 106 + 7b8: de 4f sbci r29, 0xFE ; 254 + 7ba: 80 81 ld r24, Z + 7bc: 28 2f mov r18, r24 + 7be: 30 e0 ldi r19, 0x00 ; 0 + 7c0: 45 30 cpi r20, 0x05 ; 5 + 7c2: 38 f4 brcc .+14 ; 0x7d2 + 7c4: 06 2e mov r0, r22 + 7c6: 02 c0 rjmp .+4 ; 0x7cc + 7c8: 22 0f add r18, r18 + 7ca: 33 1f adc r19, r19 + 7cc: 0a 94 dec r0 + 7ce: e2 f7 brpl .-8 ; 0x7c8 + 7d0: 06 c0 rjmp .+12 ; 0x7de + 7d2: 00 2e mov r0, r16 + 7d4: 02 c0 rjmp .+4 ; 0x7da + 7d6: 35 95 asr r19 + 7d8: 27 95 ror r18 + 7da: 0a 94 dec r0 + 7dc: e2 f7 brpl .-8 ; 0x7d6 + 7de: 51 30 cpi r21, 0x01 ; 1 + 7e0: 31 f0 breq .+12 ; 0x7ee + 7e2: 52 30 cpi r21, 0x02 ; 2 + 7e4: 11 f0 breq .+4 ; 0x7ea + 7e6: 53 30 cpi r21, 0x03 ; 3 + 7e8: 29 f4 brne .+10 ; 0x7f4 + 7ea: 41 30 cpi r20, 0x01 ; 1 + 7ec: 99 f0 breq .+38 ; 0x814 + 7ee: 48 30 cpi r20, 0x08 ; 8 + 7f0: 39 f4 brne .+14 ; 0x800 + 7f2: 10 c0 rjmp .+32 ; 0x814 + 7f4: 54 30 cpi r21, 0x04 ; 4 + 7f6: 21 f4 brne .+8 ; 0x800 + 7f8: 42 30 cpi r20, 0x02 ; 2 + 7fa: 61 f0 breq .+24 ; 0x814 + 7fc: 47 30 cpi r20, 0x07 ; 7 + 7fe: 51 f0 breq .+20 ; 0x814 + 800: 8c 91 ld r24, X + 802: 28 23 and r18, r24 + 804: 39 f4 brne .+14 ; 0x814 + 806: 31 96 adiw r30, 0x01 ; 1 + 808: 11 96 adiw r26, 0x01 ; 1 + 80a: ac 17 cp r26, r28 + 80c: bd 07 cpc r27, r29 + 80e: a9 f6 brne .-86 ; 0x7ba + 810: 80 e0 ldi r24, 0x00 ; 0 + 812: 01 c0 rjmp .+2 ; 0x816 + 814: 81 e0 ldi r24, 0x01 ; 1 + 816: df 91 pop r29 + 818: cf 91 pop r28 + 81a: 1f 91 pop r17 + 81c: 0f 91 pop r16 + 81e: 08 95 ret + +00000820 : + 820: cf 92 push r12 + 822: df 92 push r13 + 824: ef 92 push r14 + 826: ff 92 push r15 + 828: 0f 93 push r16 + 82a: 1f 93 push r17 + 82c: df 93 push r29 + 82e: cf 93 push r28 + 830: 00 d0 rcall .+0 ; 0x832 + 832: cd b7 in r28, 0x3d ; 61 + 834: de b7 in r29, 0x3e ; 62 + 836: 80 91 8c 01 lds r24, 0x018C + 83a: b7 e0 ldi r27, 0x07 ; 7 + 83c: eb 2e mov r14, r27 + 83e: e8 22 and r14, r24 + 840: e3 94 inc r14 + 842: 00 e0 ldi r16, 0x00 ; 0 + 844: 10 e0 ldi r17, 0x00 ; 0 + 846: 86 95 lsr r24 + 848: 86 95 lsr r24 + 84a: 86 95 lsr r24 + 84c: c8 2e mov r12, r24 + 84e: c3 94 inc r12 + 850: d0 2e mov r13, r16 + 852: 80 91 8c 01 lds r24, 0x018C + 856: f8 01 movw r30, r16 + 858: e8 0f add r30, r24 + 85a: f1 1d adc r31, r1 + 85c: e8 30 cpi r30, 0x08 ; 8 + 85e: f1 05 cpc r31, r1 + 860: 0c f0 brlt .+2 ; 0x864 + 862: 6b c0 rjmp .+214 ; 0x93a + 864: ee 56 subi r30, 0x6E ; 110 + 866: fe 4f sbci r31, 0xFE ; 254 + 868: 80 81 ld r24, Z + 86a: 8f 3f cpi r24, 0xFF ; 255 + 86c: 09 f0 breq .+2 ; 0x870 + 86e: 65 c0 rjmp .+202 ; 0x93a + 870: ff 24 eor r15, r15 + 872: 8c 2d mov r24, r12 + 874: 6e 2d mov r22, r14 + 876: 40 e0 ldi r20, 0x00 ; 0 + 878: 0e 94 8c 01 call 0x318 ; 0x318 + 87c: 28 ee ldi r18, 0xE8 ; 232 + 87e: 33 e0 ldi r19, 0x03 ; 3 + 880: 1a 82 std Y+2, r1 ; 0x02 + 882: 19 82 std Y+1, r1 ; 0x01 + 884: 05 c0 rjmp .+10 ; 0x890 + 886: 89 81 ldd r24, Y+1 ; 0x01 + 888: 9a 81 ldd r25, Y+2 ; 0x02 + 88a: 01 96 adiw r24, 0x01 ; 1 + 88c: 9a 83 std Y+2, r25 ; 0x02 + 88e: 89 83 std Y+1, r24 ; 0x01 + 890: 89 81 ldd r24, Y+1 ; 0x01 + 892: 9a 81 ldd r25, Y+2 ; 0x02 + 894: 8b 35 cpi r24, 0x5B ; 91 + 896: 91 05 cpc r25, r1 + 898: b1 f7 brne .-20 ; 0x886 + 89a: 21 50 subi r18, 0x01 ; 1 + 89c: 30 40 sbci r19, 0x00 ; 0 + 89e: 81 f7 brne .-32 ; 0x880 + 8a0: 8c 2d mov r24, r12 + 8a2: 6e 2d mov r22, r14 + 8a4: 4f ef ldi r20, 0xFF ; 255 + 8a6: 0e 94 8c 01 call 0x318 ; 0x318 + 8aa: 28 ee ldi r18, 0xE8 ; 232 + 8ac: 33 e0 ldi r19, 0x03 ; 3 + 8ae: 1a 82 std Y+2, r1 ; 0x02 + 8b0: 19 82 std Y+1, r1 ; 0x01 + 8b2: 05 c0 rjmp .+10 ; 0x8be + 8b4: 89 81 ldd r24, Y+1 ; 0x01 + 8b6: 9a 81 ldd r25, Y+2 ; 0x02 + 8b8: 01 96 adiw r24, 0x01 ; 1 + 8ba: 9a 83 std Y+2, r25 ; 0x02 + 8bc: 89 83 std Y+1, r24 ; 0x01 + 8be: 89 81 ldd r24, Y+1 ; 0x01 + 8c0: 9a 81 ldd r25, Y+2 ; 0x02 + 8c2: 8b 35 cpi r24, 0x5B ; 91 + 8c4: 91 05 cpc r25, r1 + 8c6: b1 f7 brne .-20 ; 0x8b4 + 8c8: 21 50 subi r18, 0x01 ; 1 + 8ca: 30 40 sbci r19, 0x00 ; 0 + 8cc: 81 f7 brne .-32 ; 0x8ae + 8ce: f3 94 inc r15 + 8d0: 83 e0 ldi r24, 0x03 ; 3 + 8d2: f8 16 cp r15, r24 + 8d4: 71 f6 brne .-100 ; 0x872 + 8d6: 90 91 8c 01 lds r25, 0x018C + 8da: 9d 0d add r25, r13 + 8dc: 08 c0 rjmp .+16 ; 0x8ee + 8de: e9 2f mov r30, r25 + 8e0: f0 e0 ldi r31, 0x00 ; 0 + 8e2: ee 56 subi r30, 0x6E ; 110 + 8e4: fe 4f sbci r31, 0xFE ; 254 + 8e6: 82 91 ld r24, -Z + 8e8: 31 96 adiw r30, 0x01 ; 1 + 8ea: 80 83 st Z, r24 + 8ec: 91 50 subi r25, 0x01 ; 1 + 8ee: 99 23 and r25, r25 + 8f0: b1 f7 brne .-20 ; 0x8de + 8f2: 0e 94 39 01 call 0x272 ; 0x272 + 8f6: e0 e0 ldi r30, 0x00 ; 0 + 8f8: f1 e0 ldi r31, 0x01 ; 1 + 8fa: 07 c0 rjmp .+14 ; 0x90a + 8fc: 80 91 c0 00 lds r24, 0x00C0 + 900: 85 ff sbrs r24, 5 + 902: fc cf rjmp .-8 ; 0x8fc + 904: 90 93 c6 00 sts 0x00C6, r25 + 908: 31 96 adiw r30, 0x01 ; 1 + 90a: 90 81 ld r25, Z + 90c: 99 23 and r25, r25 + 90e: b1 f7 brne .-20 ; 0x8fc + 910: 80 91 86 01 lds r24, 0x0186 + 914: 8f 5f subi r24, 0xFF ; 255 + 916: 80 93 86 01 sts 0x0186, r24 + 91a: 81 50 subi r24, 0x01 ; 1 + 91c: 0e 94 9c 00 call 0x138 ; 0x138 + 920: e8 e0 ldi r30, 0x08 ; 8 + 922: f1 e0 ldi r31, 0x01 ; 1 + 924: 07 c0 rjmp .+14 ; 0x934 + 926: 80 91 c0 00 lds r24, 0x00C0 + 92a: 85 ff sbrs r24, 5 + 92c: fc cf rjmp .-8 ; 0x926 + 92e: 90 93 c6 00 sts 0x00C6, r25 + 932: 31 96 adiw r30, 0x01 ; 1 + 934: 90 81 ld r25, Z + 936: 99 23 and r25, r25 + 938: b1 f7 brne .-20 ; 0x926 + 93a: 0f 5f subi r16, 0xFF ; 255 + 93c: 1f 4f sbci r17, 0xFF ; 255 + 93e: e3 94 inc r14 + 940: 04 30 cpi r16, 0x04 ; 4 + 942: 11 05 cpc r17, r1 + 944: 09 f0 breq .+2 ; 0x948 + 946: 84 cf rjmp .-248 ; 0x850 + 948: 0f 90 pop r0 + 94a: 0f 90 pop r0 + 94c: cf 91 pop r28 + 94e: df 91 pop r29 + 950: 1f 91 pop r17 + 952: 0f 91 pop r16 + 954: ff 90 pop r15 + 956: ef 90 pop r14 + 958: df 90 pop r13 + 95a: cf 90 pop r12 + 95c: 08 95 ret + +0000095e : + 95e: af 92 push r10 + 960: bf 92 push r11 + 962: cf 92 push r12 + 964: df 92 push r13 + 966: ff 92 push r15 + 968: 0f 93 push r16 + 96a: 1f 93 push r17 + 96c: df 93 push r29 + 96e: cf 93 push r28 + 970: 00 d0 rcall .+0 ; 0x972 + 972: 00 d0 rcall .+0 ; 0x974 + 974: 0f 92 push r0 + 976: cd b7 in r28, 0x3d ; 61 + 978: de b7 in r29, 0x3e ; 62 + 97a: de 01 movw r26, r28 + 97c: 13 96 adiw r26, 0x03 ; 3 + 97e: e7 e8 ldi r30, 0x87 ; 135 + 980: f1 e0 ldi r31, 0x01 ; 1 + 982: 83 e0 ldi r24, 0x03 ; 3 + 984: 01 90 ld r0, Z+ + 986: 0d 92 st X+, r0 + 988: 81 50 subi r24, 0x01 ; 1 + 98a: e1 f7 brne .-8 ; 0x984 + 98c: 10 e0 ldi r17, 0x00 ; 0 + 98e: 1f 5f subi r17, 0xFF ; 255 + 990: 81 e0 ldi r24, 0x01 ; 1 + 992: 61 2f mov r22, r17 + 994: 4f ef ldi r20, 0xFF ; 255 + 996: 0e 94 8c 01 call 0x318 ; 0x318 + 99a: 24 ef ldi r18, 0xF4 ; 244 + 99c: 31 e0 ldi r19, 0x01 ; 1 + 99e: 1a 82 std Y+2, r1 ; 0x02 + 9a0: 19 82 std Y+1, r1 ; 0x01 + 9a2: 05 c0 rjmp .+10 ; 0x9ae + 9a4: 89 81 ldd r24, Y+1 ; 0x01 + 9a6: 9a 81 ldd r25, Y+2 ; 0x02 + 9a8: 01 96 adiw r24, 0x01 ; 1 + 9aa: 9a 83 std Y+2, r25 ; 0x02 + 9ac: 89 83 std Y+1, r24 ; 0x01 + 9ae: 89 81 ldd r24, Y+1 ; 0x01 + 9b0: 9a 81 ldd r25, Y+2 ; 0x02 + 9b2: 8b 35 cpi r24, 0x5B ; 91 + 9b4: 91 05 cpc r25, r1 + 9b6: b1 f7 brne .-20 ; 0x9a4 + 9b8: 21 50 subi r18, 0x01 ; 1 + 9ba: 30 40 sbci r19, 0x00 ; 0 + 9bc: 81 f7 brne .-32 ; 0x99e + 9be: 18 30 cpi r17, 0x08 ; 8 + 9c0: 31 f7 brne .-52 ; 0x98e + 9c2: 02 e9 ldi r16, 0x92 ; 146 + 9c4: 11 e0 ldi r17, 0x01 ; 1 + 9c6: ff 24 eor r15, r15 + 9c8: f3 94 inc r15 + 9ca: 81 e0 ldi r24, 0x01 ; 1 + 9cc: 6f 2d mov r22, r15 + 9ce: 40 e0 ldi r20, 0x00 ; 0 + 9d0: 0e 94 8c 01 call 0x318 ; 0x318 + 9d4: f8 01 movw r30, r16 + 9d6: 10 82 st Z, r1 + 9d8: 24 ef ldi r18, 0xF4 ; 244 + 9da: 31 e0 ldi r19, 0x01 ; 1 + 9dc: 1a 82 std Y+2, r1 ; 0x02 + 9de: 19 82 std Y+1, r1 ; 0x01 + 9e0: 05 c0 rjmp .+10 ; 0x9ec + 9e2: 89 81 ldd r24, Y+1 ; 0x01 + 9e4: 9a 81 ldd r25, Y+2 ; 0x02 + 9e6: 01 96 adiw r24, 0x01 ; 1 + 9e8: 9a 83 std Y+2, r25 ; 0x02 + 9ea: 89 83 std Y+1, r24 ; 0x01 + 9ec: 89 81 ldd r24, Y+1 ; 0x01 + 9ee: 9a 81 ldd r25, Y+2 ; 0x02 + 9f0: 8b 35 cpi r24, 0x5B ; 91 + 9f2: 91 05 cpc r25, r1 + 9f4: b1 f7 brne .-20 ; 0x9e2 + 9f6: 21 50 subi r18, 0x01 ; 1 + 9f8: 30 40 sbci r19, 0x00 ; 0 + 9fa: 81 f7 brne .-32 ; 0x9dc + 9fc: 0f 5f subi r16, 0xFF ; 255 + 9fe: 1f 4f sbci r17, 0xFF ; 255 + a00: f8 e0 ldi r31, 0x08 ; 8 + a02: ff 16 cp r15, r31 + a04: 09 f7 brne .-62 ; 0x9c8 + a06: ff 24 eor r15, r15 + a08: 13 e0 ldi r17, 0x03 ; 3 + a0a: a1 2e mov r10, r17 + a0c: b1 2c mov r11, r1 + a0e: ac 0e add r10, r28 + a10: bd 1e adc r11, r29 + a12: 32 c0 rjmp .+100 ; 0xa78 + a14: 00 e0 ldi r16, 0x00 ; 0 + a16: 10 e0 ldi r17, 0x00 ; 0 + a18: cf 2c mov r12, r15 + a1a: dd 24 eor r13, r13 + a1c: 20 2f mov r18, r16 + a1e: 2f 5f subi r18, 0xFF ; 255 + a20: c8 01 movw r24, r16 + a22: 8c 0d add r24, r12 + a24: 9d 1d adc r25, r13 + a26: 63 e0 ldi r22, 0x03 ; 3 + a28: 70 e0 ldi r23, 0x00 ; 0 + a2a: 0e 94 d2 06 call 0xda4 ; 0xda4 <__divmodhi4> + a2e: f5 01 movw r30, r10 + a30: e8 0f add r30, r24 + a32: f9 1f adc r31, r25 + a34: 81 e0 ldi r24, 0x01 ; 1 + a36: 62 2f mov r22, r18 + a38: 40 81 ld r20, Z + a3a: 0e 94 8c 01 call 0x318 ; 0x318 + a3e: 0f 5f subi r16, 0xFF ; 255 + a40: 1f 4f sbci r17, 0xFF ; 255 + a42: 08 30 cpi r16, 0x08 ; 8 + a44: 11 05 cpc r17, r1 + a46: 51 f7 brne .-44 ; 0xa1c + a48: 81 e0 ldi r24, 0x01 ; 1 + a4a: 8f 15 cp r24, r15 + a4c: 10 f4 brcc .+4 ; 0xa52 + a4e: ff 24 eor r15, r15 + a50: 01 c0 rjmp .+2 ; 0xa54 + a52: f3 94 inc r15 + a54: 28 ee ldi r18, 0xE8 ; 232 + a56: 33 e0 ldi r19, 0x03 ; 3 + a58: 1a 82 std Y+2, r1 ; 0x02 + a5a: 19 82 std Y+1, r1 ; 0x01 + a5c: 05 c0 rjmp .+10 ; 0xa68 + a5e: 89 81 ldd r24, Y+1 ; 0x01 + a60: 9a 81 ldd r25, Y+2 ; 0x02 + a62: 01 96 adiw r24, 0x01 ; 1 + a64: 9a 83 std Y+2, r25 ; 0x02 + a66: 89 83 std Y+1, r24 ; 0x01 + a68: 89 81 ldd r24, Y+1 ; 0x01 + a6a: 9a 81 ldd r25, Y+2 ; 0x02 + a6c: 8b 35 cpi r24, 0x5B ; 91 + a6e: 91 05 cpc r25, r1 + a70: b1 f7 brne .-20 ; 0xa5e + a72: 21 50 subi r18, 0x01 ; 1 + a74: 30 40 sbci r19, 0x00 ; 0 + a76: 81 f7 brne .-32 ; 0xa58 + a78: 80 91 9d 01 lds r24, 0x019D + a7c: 88 23 and r24, r24 + a7e: 51 f2 breq .-108 ; 0xa14 + a80: 81 e0 ldi r24, 0x01 ; 1 + a82: 80 93 86 01 sts 0x0186, r24 + a86: e2 e1 ldi r30, 0x12 ; 18 + a88: f1 e0 ldi r31, 0x01 ; 1 + a8a: 07 c0 rjmp .+14 ; 0xa9a + a8c: 80 91 c0 00 lds r24, 0x00C0 + a90: 85 ff sbrs r24, 5 + a92: fc cf rjmp .-8 ; 0xa8c + a94: 90 93 c6 00 sts 0x00C6, r25 + a98: 31 96 adiw r30, 0x01 ; 1 + a9a: 90 81 ld r25, Z + a9c: 99 23 and r25, r25 + a9e: b1 f7 brne .-20 ; 0xa8c + aa0: 80 91 8d 01 lds r24, 0x018D + aa4: 90 91 8e 01 lds r25, 0x018E + aa8: 65 e0 ldi r22, 0x05 ; 5 + aaa: 70 e0 ldi r23, 0x00 ; 0 + aac: 0e 94 be 06 call 0xd7c ; 0xd7c <__udivmodhi4> + ab0: 80 93 84 01 sts 0x0184, r24 + ab4: 10 92 8b 01 sts 0x018B, r1 + ab8: 0f 90 pop r0 + aba: 0f 90 pop r0 + abc: 0f 90 pop r0 + abe: 0f 90 pop r0 + ac0: 0f 90 pop r0 + ac2: cf 91 pop r28 + ac4: df 91 pop r29 + ac6: 1f 91 pop r17 + ac8: 0f 91 pop r16 + aca: ff 90 pop r15 + acc: df 90 pop r13 + ace: cf 90 pop r12 + ad0: bf 90 pop r11 + ad2: af 90 pop r10 + ad4: 08 95 ret + +00000ad6 : + ad6: 1f 93 push r17 + ad8: cf 93 push r28 + ada: df 93 push r29 + adc: 10 91 85 01 lds r17, 0x0185 + ae0: 81 2f mov r24, r17 + ae2: 90 e0 ldi r25, 0x00 ; 0 + ae4: 44 e0 ldi r20, 0x04 ; 4 + ae6: 50 e0 ldi r21, 0x00 ; 0 + ae8: 48 1b sub r20, r24 + aea: 59 0b sbc r21, r25 + aec: ec 01 movw r28, r24 + aee: 24 97 sbiw r28, 0x04 ; 4 + af0: 80 91 8c 01 lds r24, 0x018C + af4: 30 91 8b 01 lds r19, 0x018B + af8: 20 91 84 01 lds r18, 0x0184 + afc: e2 2f mov r30, r18 + afe: f0 e0 ldi r31, 0x00 ; 0 + b00: ee 0f add r30, r30 + b02: ff 1f adc r31, r31 + b04: ee 0f add r30, r30 + b06: ff 1f adc r31, r31 + b08: e3 0f add r30, r19 + b0a: f1 1d adc r31, r1 + b0c: ee 0f add r30, r30 + b0e: ff 1f adc r31, r31 + b10: ee 0f add r30, r30 + b12: ff 1f adc r31, r31 + b14: ec 5c subi r30, 0xCC ; 204 + b16: fe 4f sbci r31, 0xFE ; 254 + b18: 90 e0 ldi r25, 0x00 ; 0 + b1a: dc 01 movw r26, r24 + b1c: ae 56 subi r26, 0x6E ; 110 + b1e: be 4f sbci r27, 0xFE ; 254 + b20: bc 01 movw r22, r24 + b22: 6a 56 subi r22, 0x6A ; 106 + b24: 7e 4f sbci r23, 0xFE ; 254 + b26: 80 81 ld r24, Z + b28: 28 2f mov r18, r24 + b2a: 30 e0 ldi r19, 0x00 ; 0 + b2c: 15 30 cpi r17, 0x05 ; 5 + b2e: 38 f4 brcc .+14 ; 0xb3e + b30: 04 2e mov r0, r20 + b32: 02 c0 rjmp .+4 ; 0xb38 + b34: 22 0f add r18, r18 + b36: 33 1f adc r19, r19 + b38: 0a 94 dec r0 + b3a: e2 f7 brpl .-8 ; 0xb34 + b3c: 06 c0 rjmp .+12 ; 0xb4a + b3e: 0c 2e mov r0, r28 + b40: 02 c0 rjmp .+4 ; 0xb46 + b42: 35 95 asr r19 + b44: 27 95 ror r18 + b46: 0a 94 dec r0 + b48: e2 f7 brpl .-8 ; 0xb42 + b4a: 8c 91 ld r24, X + b4c: 82 2b or r24, r18 + b4e: 8d 93 st X+, r24 + b50: 31 96 adiw r30, 0x01 ; 1 + b52: a6 17 cp r26, r22 + b54: b7 07 cpc r27, r23 + b56: 39 f7 brne .-50 ; 0xb26 + b58: 0e 94 10 04 call 0x820 ; 0x820 + b5c: 10 92 8c 01 sts 0x018C, r1 + b60: 10 92 8b 01 sts 0x018B, r1 + b64: 84 e0 ldi r24, 0x04 ; 4 + b66: 80 93 85 01 sts 0x0185, r24 + b6a: 80 91 91 01 lds r24, 0x0191 + b6e: 80 93 84 01 sts 0x0184, r24 + b72: 0e 94 76 02 call 0x4ec ; 0x4ec + b76: 81 30 cpi r24, 0x01 ; 1 + b78: 19 f0 breq .+6 ; 0xb80 + b7a: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + b7e: 02 c0 rjmp .+4 ; 0xb84 + b80: 0e 94 af 04 call 0x95e ; 0x95e + b84: df 91 pop r29 + b86: cf 91 pop r28 + b88: 1f 91 pop r17 + b8a: 08 95 ret + +00000b8c
: + b8c: 1f 93 push r17 + b8e: 23 9a sbi 0x04, 3 ; 4 + b90: 25 9a sbi 0x04, 5 ; 4 + b92: 24 9a sbi 0x04, 4 ; 4 + b94: 22 9a sbi 0x04, 2 ; 4 + b96: 81 e0 ldi r24, 0x01 ; 1 + b98: 60 91 31 01 lds r22, 0x0131 + b9c: 47 e0 ldi r20, 0x07 ; 7 + b9e: 0e 94 8c 01 call 0x318 ; 0x318 + ba2: 81 e0 ldi r24, 0x01 ; 1 + ba4: 60 91 2f 01 lds r22, 0x012F + ba8: 40 e0 ldi r20, 0x00 ; 0 + baa: 0e 94 8c 01 call 0x318 ; 0x318 + bae: 81 e0 ldi r24, 0x01 ; 1 + bb0: 60 91 32 01 lds r22, 0x0132 + bb4: 41 e0 ldi r20, 0x01 ; 1 + bb6: 0e 94 8c 01 call 0x318 ; 0x318 + bba: 81 e0 ldi r24, 0x01 ; 1 + bbc: 60 91 33 01 lds r22, 0x0133 + bc0: 40 e0 ldi r20, 0x00 ; 0 + bc2: 0e 94 8c 01 call 0x318 ; 0x318 + bc6: 10 e0 ldi r17, 0x00 ; 0 + bc8: 1f 5f subi r17, 0xFF ; 255 + bca: 81 e0 ldi r24, 0x01 ; 1 + bcc: 61 2f mov r22, r17 + bce: 40 e0 ldi r20, 0x00 ; 0 + bd0: 0e 94 8c 01 call 0x318 ; 0x318 + bd4: 18 30 cpi r17, 0x08 ; 8 + bd6: c1 f7 brne .-16 ; 0xbc8 + bd8: 81 e0 ldi r24, 0x01 ; 1 + bda: 60 91 30 01 lds r22, 0x0130 + bde: 4f e0 ldi r20, 0x0F ; 15 + be0: 0e 94 8c 01 call 0x318 ; 0x318 + be4: 87 e6 ldi r24, 0x67 ; 103 + be6: 90 e0 ldi r25, 0x00 ; 0 + be8: 90 93 c5 00 sts 0x00C5, r25 + bec: 80 93 c4 00 sts 0x00C4, r24 + bf0: 86 e0 ldi r24, 0x06 ; 6 + bf2: 80 93 c2 00 sts 0x00C2, r24 + bf6: 80 91 c1 00 lds r24, 0x00C1 + bfa: 88 61 ori r24, 0x18 ; 24 + bfc: 80 93 c1 00 sts 0x00C1, r24 + c00: 80 91 c1 00 lds r24, 0x00C1 + c04: 80 68 ori r24, 0x80 ; 128 + c06: 80 93 c1 00 sts 0x00C1, r24 + c0a: 78 94 sei + c0c: 8f ef ldi r24, 0xFF ; 255 + c0e: 80 93 9a 01 sts 0x019A, r24 + c12: 80 91 8d 01 lds r24, 0x018D + c16: 83 70 andi r24, 0x03 ; 3 + c18: 80 93 84 01 sts 0x0184, r24 + c1c: e2 e1 ldi r30, 0x12 ; 18 + c1e: f1 e0 ldi r31, 0x01 ; 1 + c20: 07 c0 rjmp .+14 ; 0xc30 + c22: 80 91 c0 00 lds r24, 0x00C0 + c26: 85 ff sbrs r24, 5 + c28: fc cf rjmp .-8 ; 0xc22 + c2a: 90 93 c6 00 sts 0x00C6, r25 + c2e: 31 96 adiw r30, 0x01 ; 1 + c30: 90 81 ld r25, Z + c32: 99 23 and r25, r25 + c34: b1 f7 brne .-20 ; 0xc22 + c36: 60 91 8d 01 lds r22, 0x018D + c3a: 70 91 8e 01 lds r23, 0x018E + c3e: 80 91 8f 01 lds r24, 0x018F + c42: 90 91 90 01 lds r25, 0x0190 + c46: 20 e2 ldi r18, 0x20 ; 32 + c48: 3e e4 ldi r19, 0x4E ; 78 + c4a: 40 e0 ldi r20, 0x00 ; 0 + c4c: 50 e0 ldi r21, 0x00 ; 0 + c4e: 0e 94 e5 06 call 0xdca ; 0xdca <__udivmodsi4> + c52: 61 15 cp r22, r1 + c54: 71 05 cpc r23, r1 + c56: 81 05 cpc r24, r1 + c58: 91 05 cpc r25, r1 + c5a: 09 f5 brne .+66 ; 0xc9e + c5c: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + c60: 0e 94 2d 02 call 0x45a ; 0x45a + c64: 81 30 cpi r24, 0x01 ; 1 + c66: 31 f0 breq .+12 ; 0xc74 + c68: 80 91 8c 01 lds r24, 0x018C + c6c: 8f 5f subi r24, 0xFF ; 255 + c6e: 80 93 8c 01 sts 0x018C, r24 + c72: 15 c0 rjmp .+42 ; 0xc9e + c74: 90 91 9b 01 lds r25, 0x019B + c78: 80 91 91 01 lds r24, 0x0191 + c7c: 98 17 cp r25, r24 + c7e: 19 f4 brne .+6 ; 0xc86 + c80: 9f 5f subi r25, 0xFF ; 255 + c82: 90 93 91 01 sts 0x0191, r25 + c86: 80 91 91 01 lds r24, 0x0191 + c8a: 86 30 cpi r24, 0x06 ; 6 + c8c: 10 f0 brcs .+4 ; 0xc92 + c8e: 10 92 91 01 sts 0x0191, r1 + c92: 80 91 91 01 lds r24, 0x0191 + c96: 80 93 9b 01 sts 0x019B, r24 + c9a: 0e 94 6b 05 call 0xad6 ; 0xad6 + c9e: 20 91 8d 01 lds r18, 0x018D + ca2: 30 91 8e 01 lds r19, 0x018E + ca6: 40 91 8f 01 lds r20, 0x018F + caa: 50 91 90 01 lds r21, 0x0190 + cae: 2f 5f subi r18, 0xFF ; 255 + cb0: 3f 4f sbci r19, 0xFF ; 255 + cb2: 4f 4f sbci r20, 0xFF ; 255 + cb4: 5f 4f sbci r21, 0xFF ; 255 + cb6: 20 93 8d 01 sts 0x018D, r18 + cba: 30 93 8e 01 sts 0x018E, r19 + cbe: 40 93 8f 01 sts 0x018F, r20 + cc2: 50 93 90 01 sts 0x0190, r21 + cc6: 90 91 9d 01 lds r25, 0x019D + cca: 80 91 9c 01 lds r24, 0x019C + cce: 98 17 cp r25, r24 + cd0: 09 f4 brne .+2 ; 0xcd4 + cd2: b1 cf rjmp .-158 ; 0xc36 + cd4: 80 91 9d 01 lds r24, 0x019D + cd8: 80 93 9c 01 sts 0x019C, r24 + cdc: 82 2f mov r24, r18 + cde: 83 70 andi r24, 0x03 ; 3 + ce0: 80 93 91 01 sts 0x0191, r24 + ce4: 80 91 9d 01 lds r24, 0x019D + ce8: 83 34 cpi r24, 0x43 ; 67 + cea: 69 f4 brne .+26 ; 0xd06 + cec: 0e 94 36 03 call 0x66c ; 0x66c + cf0: 81 30 cpi r24, 0x01 ; 1 + cf2: 29 f0 breq .+10 ; 0xcfe + cf4: 80 91 85 01 lds r24, 0x0185 + cf8: 8f 5f subi r24, 0xFF ; 255 + cfa: 80 93 85 01 sts 0x0185, r24 + cfe: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d02: 0e 94 05 01 call 0x20a ; 0x20a + d06: 80 91 9d 01 lds r24, 0x019D + d0a: 84 34 cpi r24, 0x44 ; 68 + d0c: 69 f4 brne .+26 ; 0xd28 + d0e: 0e 94 bf 02 call 0x57e ; 0x57e + d12: 81 30 cpi r24, 0x01 ; 1 + d14: 29 f0 breq .+10 ; 0xd20 + d16: 80 91 85 01 lds r24, 0x0185 + d1a: 81 50 subi r24, 0x01 ; 1 + d1c: 80 93 85 01 sts 0x0185, r24 + d20: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d24: 0e 94 05 01 call 0x20a ; 0x20a + d28: 80 91 9d 01 lds r24, 0x019D + d2c: 82 34 cpi r24, 0x42 ; 66 + d2e: 69 f4 brne .+26 ; 0xd4a + d30: 0e 94 2d 02 call 0x45a ; 0x45a + d34: 81 30 cpi r24, 0x01 ; 1 + d36: 29 f0 breq .+10 ; 0xd42 + d38: 80 91 8c 01 lds r24, 0x018C + d3c: 8f 5f subi r24, 0xFF ; 255 + d3e: 80 93 8c 01 sts 0x018C, r24 + d42: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d46: 0e 94 05 01 call 0x20a ; 0x20a + d4a: 80 91 9d 01 lds r24, 0x019D + d4e: 81 34 cpi r24, 0x41 ; 65 + d50: 91 f4 brne .+36 ; 0xd76 + d52: 0e 94 ad 03 call 0x75a ; 0x75a + d56: 81 30 cpi r24, 0x01 ; 1 + d58: 71 f0 breq .+28 ; 0xd76 + d5a: 80 91 8b 01 lds r24, 0x018B + d5e: 83 30 cpi r24, 0x03 ; 3 + d60: 20 f4 brcc .+8 ; 0xd6a + d62: 8f 5f subi r24, 0xFF ; 255 + d64: 80 93 8b 01 sts 0x018B, r24 + d68: 02 c0 rjmp .+4 ; 0xd6e + d6a: 10 92 8b 01 sts 0x018B, r1 + d6e: 0e 94 d3 01 call 0x3a6 ; 0x3a6 + d72: 0e 94 05 01 call 0x20a ; 0x20a + d76: 10 92 9d 01 sts 0x019D, r1 + d7a: 5d cf rjmp .-326 ; 0xc36 + +00000d7c <__udivmodhi4>: + d7c: aa 1b sub r26, r26 + d7e: bb 1b sub r27, r27 + d80: 51 e1 ldi r21, 0x11 ; 17 + d82: 07 c0 rjmp .+14 ; 0xd92 <__udivmodhi4_ep> + +00000d84 <__udivmodhi4_loop>: + d84: aa 1f adc r26, r26 + d86: bb 1f adc r27, r27 + d88: a6 17 cp r26, r22 + d8a: b7 07 cpc r27, r23 + d8c: 10 f0 brcs .+4 ; 0xd92 <__udivmodhi4_ep> + d8e: a6 1b sub r26, r22 + d90: b7 0b sbc r27, r23 + +00000d92 <__udivmodhi4_ep>: + d92: 88 1f adc r24, r24 + d94: 99 1f adc r25, r25 + d96: 5a 95 dec r21 + d98: a9 f7 brne .-22 ; 0xd84 <__udivmodhi4_loop> + d9a: 80 95 com r24 + d9c: 90 95 com r25 + d9e: bc 01 movw r22, r24 + da0: cd 01 movw r24, r26 + da2: 08 95 ret + +00000da4 <__divmodhi4>: + da4: 97 fb bst r25, 7 + da6: 09 2e mov r0, r25 + da8: 07 26 eor r0, r23 + daa: 0a d0 rcall .+20 ; 0xdc0 <__divmodhi4_neg1> + dac: 77 fd sbrc r23, 7 + dae: 04 d0 rcall .+8 ; 0xdb8 <__divmodhi4_neg2> + db0: e5 df rcall .-54 ; 0xd7c <__udivmodhi4> + db2: 06 d0 rcall .+12 ; 0xdc0 <__divmodhi4_neg1> + db4: 00 20 and r0, r0 + db6: 1a f4 brpl .+6 ; 0xdbe <__divmodhi4_exit> + +00000db8 <__divmodhi4_neg2>: + db8: 70 95 com r23 + dba: 61 95 neg r22 + dbc: 7f 4f sbci r23, 0xFF ; 255 + +00000dbe <__divmodhi4_exit>: + dbe: 08 95 ret + +00000dc0 <__divmodhi4_neg1>: + dc0: f6 f7 brtc .-4 ; 0xdbe <__divmodhi4_exit> + dc2: 90 95 com r25 + dc4: 81 95 neg r24 + dc6: 9f 4f sbci r25, 0xFF ; 255 + dc8: 08 95 ret + +00000dca <__udivmodsi4>: + dca: a1 e2 ldi r26, 0x21 ; 33 + dcc: 1a 2e mov r1, r26 + dce: aa 1b sub r26, r26 + dd0: bb 1b sub r27, r27 + dd2: fd 01 movw r30, r26 + dd4: 0d c0 rjmp .+26 ; 0xdf0 <__udivmodsi4_ep> + +00000dd6 <__udivmodsi4_loop>: + dd6: aa 1f adc r26, r26 + dd8: bb 1f adc r27, r27 + dda: ee 1f adc r30, r30 + ddc: ff 1f adc r31, r31 + dde: a2 17 cp r26, r18 + de0: b3 07 cpc r27, r19 + de2: e4 07 cpc r30, r20 + de4: f5 07 cpc r31, r21 + de6: 20 f0 brcs .+8 ; 0xdf0 <__udivmodsi4_ep> + de8: a2 1b sub r26, r18 + dea: b3 0b sbc r27, r19 + dec: e4 0b sbc r30, r20 + dee: f5 0b sbc r31, r21 + +00000df0 <__udivmodsi4_ep>: + df0: 66 1f adc r22, r22 + df2: 77 1f adc r23, r23 + df4: 88 1f adc r24, r24 + df6: 99 1f adc r25, r25 + df8: 1a 94 dec r1 + dfa: 69 f7 brne .-38 ; 0xdd6 <__udivmodsi4_loop> + dfc: 60 95 com r22 + dfe: 70 95 com r23 + e00: 80 95 com r24 + e02: 90 95 com r25 + e04: 9b 01 movw r18, r22 + e06: ac 01 movw r20, r24 + e08: bd 01 movw r22, r26 + e0a: cf 01 movw r24, r30 + e0c: 08 95 ret + +00000e0e <_exit>: + e0e: f8 94 cli + +00000e10 <__stop_program>: + e10: ff cf rjmp .-2 ; 0xe10 <__stop_program> diff --git a/compiled.map b/compiled.map new file mode 100644 index 0000000..7569405 --- /dev/null +++ b/compiled.map @@ -0,0 +1,434 @@ +Archive member included because of file (symbol) + +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodhi4.o) + tetris.o (__udivmodhi4) +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_divmodhi4.o) + tetris.o (__divmodhi4) +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodsi4.o) + tetris.o (__udivmodsi4) +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o (exit) +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + tetris.o (__do_copy_data) +/usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + tetris.o (__do_clear_bss) + +Allocating common symbols +Common symbol size file + +screen 0x9 tetris.o +prewRandomDigit 0x1 tetris.o +oldu 0x1 tetris.o +u 0x1 tetris.o + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o +LOAD tetris.o +LOAD /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0xe12 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + 0x00000068 . = ALIGN (0x2) + 0x00000068 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000068 0x0 linker stubs + *(.trampolines*) + 0x00000068 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000068 __ctors_start = . + *(.ctors) + 0x00000068 __ctors_end = . + 0x00000068 __dtors_start = . + *(.dtors) + 0x00000068 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000068 0x0 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + 0x00000068 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000068 0xc /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000074 0x16 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + 0x00000074 __do_copy_data + .init4 0x0000008a 0x10 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + 0x0000008a __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x0000009a 0x8 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + *(.init9) + *(.text) + .text 0x000000a2 0x4 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + 0x000000a2 __vector_22 + 0x000000a2 __vector_1 + 0x000000a2 __vector_24 + 0x000000a2 __vector_12 + 0x000000a2 __bad_interrupt + 0x000000a2 __vector_6 + 0x000000a2 __vector_3 + 0x000000a2 __vector_23 + 0x000000a2 __vector_25 + 0x000000a2 __vector_11 + 0x000000a2 __vector_13 + 0x000000a2 __vector_17 + 0x000000a2 __vector_19 + 0x000000a2 __vector_7 + 0x000000a2 __vector_5 + 0x000000a2 __vector_4 + 0x000000a2 __vector_9 + 0x000000a2 __vector_2 + 0x000000a2 __vector_21 + 0x000000a2 __vector_15 + 0x000000a2 __vector_8 + 0x000000a2 __vector_14 + 0x000000a2 __vector_10 + 0x000000a2 __vector_16 + 0x000000a2 __vector_20 + .text 0x000000a6 0xcd6 tetris.o + 0x000000a6 setRXCIE_USART0 + 0x000000b2 init_USART0 + 0x000000cc receive_1byte_USART0 + 0x000000da transmit_1byte_USART0 + 0x000000ea __vector_18 + 0x0000011e transmit_str_USART0 + 0x00000138 transmit_4digit_USART0 + 0x00000194 delay_ms + 0x000001d0 delay_ns + 0x0000020a beep + 0x00000272 bleepBleepSound + 0x000002e4 putByte + 0x00000318 maxOne + 0x00000372 moveLine + 0x000003a6 redrawScreen + 0x0000045a checkDown + 0x000004ec checkStart + 0x0000057e checkLeft + 0x0000066c checkRight + 0x0000075a checkTurn + 0x00000820 checkFullLine + 0x0000095e gameOver + 0x00000ad6 stopFigure + 0x00000b8c main + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodhi4.o) + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_divmodhi4.o) + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodsi4.o) + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + .text 0x00000d7c 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + 0x00000d7c . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000d7c 0x28 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodhi4.o) + 0x00000d7c __udivmodhi4 + .text.libgcc 0x00000da4 0x26 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_divmodhi4.o) + 0x00000da4 __divmodhi4 + 0x00000da4 _div + .text.libgcc 0x00000dca 0x44 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodsi4.o) + 0x00000dca __udivmodsi4 + .text.libgcc 0x00000e0e 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000e0e 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00000e0e 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + 0x00000e0e . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000e0e 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + 0x00000e0e exit + 0x00000e0e _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000e0e 0x4 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00000e12 _etext = . + +.data 0x00800100 0x8a load address 0x00000e12 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + .data 0x00800100 0x8a tetris.o + 0x00800127 max7219_reg_digit0 + 0x00800128 max7219_reg_digit1 + 0x00800129 max7219_reg_digit2 + 0x0080012a max7219_reg_digit3 + 0x0080012b max7219_reg_digit4 + 0x0080012c max7219_reg_digit5 + 0x0080012d max7219_reg_digit6 + 0x0080012e max7219_reg_digit7 + 0x0080012f max7219_reg_decodeMode + 0x00800130 max7219_reg_intensity + 0x00800131 max7219_reg_scanLimit + 0x00800132 max7219_reg_shutdown + 0x00800133 max7219_reg_displayTest + 0x00800134 figure + 0x00800184 currentFigure + 0x00800185 currentX + 0x00800186 score + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodhi4.o) + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_divmodhi4.o) + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodsi4.o) + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + .data 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x0080018a . = ALIGN (0x2) + 0x0080018a _edata = . + 0x0080018a PROVIDE (__data_end, .) + +.bss 0x0080018a 0x14 + 0x0080018a PROVIDE (__bss_start, .) + *(.bss) + .bss 0x0080018a 0x0 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + .bss 0x0080018a 0x8 tetris.o + 0x0080018a max7219_reg_noop + 0x0080018b currentTurn + 0x0080018c currentY + 0x0080018d timer + 0x00800191 randomDigit + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodhi4.o) + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_divmodhi4.o) + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_udivmodsi4.o) + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_exit.o) + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_copy_data.o) + .bss 0x00800192 0x0 /usr/lib/gcc/avr/4.3.4/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + COMMON 0x00800192 0xc tetris.o + 0x00800192 screen + 0x0080019b prewRandomDigit + 0x0080019c oldu + 0x0080019d u + 0x0080019e PROVIDE (__bss_end, .) + 0x00000e12 __data_load_start = LOADADDR (.data) + 0x00000e9c __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x0080019e 0x0 + 0x0080019e PROVIDE (__noinit_start, .) + *(.noinit*) + 0x0080019e PROVIDE (__noinit_end, .) + 0x0080019e _end = . + 0x0080019e PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x6b4 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + +.stabstr 0x00000000 0x54 + *(.stabstr) + .stabstr 0x00000000 0x54 /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr5/crtm168.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges + *(.debug_aranges) + +.debug_pubnames + *(.debug_pubnames) + +.debug_info + *(.debug_info) + *(.gnu.linkonce.wi.*) + +.debug_abbrev + *(.debug_abbrev) + +.debug_line + *(.debug_line) + +.debug_frame + *(.debug_frame) + +.debug_str + *(.debug_str) + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(compiled.elf elf32-avr) +LOAD linker stubs diff --git a/flash168 b/flash168 new file mode 100755 index 0000000..0d33d9d --- /dev/null +++ b/flash168 @@ -0,0 +1,10 @@ +#!/bin/bash + +# flashing script for Arduino bootloader (working via USB) + +CONF="/home/dmitry/Projects/Arduino/arduino-0011/hardware/tools/avrdude.conf" +DUDE="/home/dmitry/Projects/Arduino/arduino-0011/hardware/tools/avrdude" + +sudo $DUDE -C $CONF -p m168 -U flash:w:compiled.hex -c stk500v1 -P /dev/ttyUSB0 -b 19200 -D +//avrdude -p m168 -P /dev/ttyUSB0 -c stk500v1 -b 19200 -F -u -U flash:w:blink.hex + diff --git a/make b/make new file mode 100755 index 0000000..b49b0c9 --- /dev/null +++ b/make @@ -0,0 +1,17 @@ +#!/bin/bash + +rm -f compiled.hex compiled.lss compiled.eep compiled.elf compiled.map *.d *.o + +# -DBOARD=1 +export DEFINES="-mmcu=atmega168 -D F_CPU=4000000UL" + +avr-gcc $DEFINES -Wall -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums tetris.o -c tetris.c +avr-gcc $DEFINES -Wl,-Map=compiled.map tetris.o -o compiled.elf + +avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature compiled.elf compiled.hex +avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex compiled.elf compiled.eep +avr-objdump -h -S compiled.elf > compiled.lss +avr-objdump -h -d compiled.elf > compiled.lst +rm -f *.o + +exit diff --git a/tetris.c b/tetris.c new file mode 100644 index 0000000..46cea34 --- /dev/null +++ b/tetris.c @@ -0,0 +1,629 @@ +/* + * TETRIS for AVR microcontrollers and cascading LED matrix based on MAX7219 driver + * Copyright (C) 2010 Dmitry Shalnov [interplaymedium.org] + * test it with "screen /dev/ttyUSB0" comand (control by kbd arrows) + * created for Interplaymedium™ AXON project + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include + +// WIRING +// please change it according to your ARDUINO wiring +// don't forget to place pull-up resisor between RESET and +5V pins to avoid board reset during UART transfer. + +#define DATAIN 3 +#define LOAD 5 +#define CLOCK 4 +#define BEEPER 2 + +#define INUSE 1 // how many matrix you connect +#define STARTX 4 // horisontal position od figure strat +#define RAND_MAX 4 + +// Some macros that make the code more readable + +#define output_low(port,pin) port &= ~(1<'0') + u = c; +} + +// --------------------------------------------- Transmit String Data ------------------------------------------------- + +void transmit_str_USART0 (char *str) { + while (*str != 0) { + transmit_1byte_USART0(*str); + *str++; + } +} + +// --------------------------------------------- Transmit Four-Digit Integer ------------------------------------------ + +void transmit_4digit_USART0 (int num) { + unsigned char temp; + int digit = 1000; + + while (digit != 0) { + temp = num / digit; + transmit_1byte_USART0('0'+temp); + num -= (digit*temp); + digit /= 10; + } +} + +// --------------------------------------------- Delays -------------------------------------------------------------- + +void delay_ms (uint16_t ms) { + uint16_t delay_count = FOSC / 17500 * 0.1; + volatile uint16_t i; + while (ms != 0) { + for (i=0; i != delay_count; i++); + ms--; + } +} + +void delay_ns(uint16_t ms) { + uint16_t delay_count = FOSC / 17500 * 0.01; + volatile uint16_t i; + while (ms != 0) { + for (i=0; i != delay_count; i++); + ms--; + } +} + +// --------------------------------------------- Sounds ------------------------------------------------------------- + +void beep (){ + for(uint8_t a=0; a<100; a++){ + output_high(PORTB, BEEPER); + delay_ms(1); + output_low(PORTB, BEEPER); + delay_ms(1); + } +} + +void bleepBleepSound (){ + uint8_t a, b; + for(b=1; b<40; b+=10) for(a=0; a<100; a++){ + output_high(PORTB, BEEPER); + delay_ns(b); + output_low(PORTB, BEEPER); + delay_ns(b); + } +} + +// --------------------------------- LED MATRIX code --------------------------------------------------------------- + +// define max7219 registers +uint8_t max7219_reg_noop = 0x00; +uint8_t max7219_reg_digit0 = 0x01; +uint8_t max7219_reg_digit1 = 0x02; +uint8_t max7219_reg_digit2 = 0x03; +uint8_t max7219_reg_digit3 = 0x04; +uint8_t max7219_reg_digit4 = 0x05; +uint8_t max7219_reg_digit5 = 0x06; +uint8_t max7219_reg_digit6 = 0x07; +uint8_t max7219_reg_digit7 = 0x08; +uint8_t max7219_reg_decodeMode = 0x09; +uint8_t max7219_reg_intensity = 0x0a; +uint8_t max7219_reg_scanLimit = 0x0b; +uint8_t max7219_reg_shutdown = 0x0c; +uint8_t max7219_reg_displayTest = 0x0f; + + +void putByte(uint8_t data) { + uint8_t i = 8; + uint8_t mask; + while(i > 0) { + mask = 0x01 << (i - 1); // get bitmask + //digitalWrite( CLOCK, LOW); // tick + output_low(PORTB, CLOCK); // tick + if (data & mask){ // choose bit + //digitalWrite(DATAIN, HIGH);// send 1 + output_high(PORTB, DATAIN); + } else { + //digitalWrite(DATAIN, LOW); // send 0 + output_low(PORTB, DATAIN); + } + //digitalWrite(CLOCK, HIGH); // tock + output_high(PORTB, CLOCK); + --i; // move to lesser bit + } +} + +void maxOne(uint8_t maxNr, uint8_t reg, uint8_t col) { + //maxOne is for adressing different MAX7219's, + //whilele having a couple of them cascaded + int c = 0; + //digitalWrite(load, LOW); // begin + output_low(PORTB, LOAD); + + for ( c = INUSE; c > maxNr; c--) { + putByte(0); // means no operation + putByte(0); // means no operation + } + + putByte(reg); // specify register + putByte(col);//((data & 0x01) * 256) + data >> 1); // put data + + for ( c = maxNr-1; c >= 1; c--) { + putByte(0); // means no operation + putByte(0); // means no operation + } + + //digitalWrite(load, LOW); // and load da shit + output_low(PORTB, LOAD); + //digitalWrite(load,HIGH); + output_high(PORTB, LOAD); +} + +/* +void putPixel (uint8_t maxNr, uint8_t x, uint8_t y){ + //maxOne is for adressing different MAX7219's, + //whilele having a couple of them cascaded + + int c = 0; + //digitalWrite(load, LOW); // begin + output_low(PORTB, LOAD); + + for ( c = INUSE; c > maxNr; c--) { + putByte(0); // means no operation + putByte(0); // means no operation + } + + putByte(y); // specify register + putByte(0x01 << (8-x));//((data & 0x01) * 256) + data >> 1); // put data + + for ( c = maxNr-1; c >= 1; c--) { + putByte(0); // means no operation + putByte(0); // means no operation + } + + //digitalWrite(load, LOW); // and load da shit + output_low(PORTB, LOAD); + //digitalWrite(load,HIGH); + output_high(PORTB, LOAD); +} +*/ + +// --------------------------------- Figures ---------------------------------------------------------------------- + +uint8_t figure[5][4][4] = { + { + { + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000 + }, + { + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000 + }, + { + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000 + }, + { + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000 + } + }, + { + { + 0b00110000, + 0b00011000, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00110000, + 0b00100000, + 0b00000000 + }, + { + 0b00110000, + 0b00011000, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00110000, + 0b00100000, + 0b00000000 + } + }, + { + { + 0b00000000, + 0b00111000, + 0b00001000, + 0b00000000 + }, + { + 0b00011000, + 0b00010000, + 0b00010000, + 0b00000000 + }, + { + 0b00100000, + 0b00111000, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00010000, + 0b00110000, + 0b00000000 + } + }, + { + { + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00110000, + 0b00010000, + 0b00000000 + }, + { + 0b00000000, + 0b00111000, + 0b00010000, + 0b00000000 + }, + { + 0b00010000, + 0b00011000, + 0b00010000, + 0b00000000 + } + }, + { + { + 0b00000000, + 0b00111100, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000 + }, + { + 0b00000000, + 0b00111100, + 0b00000000, + 0b00000000 + }, + { + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000 + } + } + }; + + +// ----------------------------------------- Init variables ------------------------------------------------------------ + +uint8_t screen[ INUSE*8 + 1 ]; + +uint8_t currentFigure = 4; +uint8_t currentTurn = 0; +uint8_t currentY = 0; +uint8_t currentX = STARTX; +uint32_t timer = 0; +uint8_t randomDigit = 0; +uint8_t prewRandomDigit; +uint8_t score = 1; + +// ------------------------------------------ Game logic --------------------------------------------------------------- + +uint8_t moveLine(uint8_t L, uint8_t X){ + if (X <= 4 ) L <<= 4 - X; else L >>= X - 4; + return L; +} + +void redrawScreen (void) { + uint8_t lineToPlace = 0b00000000; + for (uint8_t matrix=0; matrix < INUSE; matrix++) for (uint8_t line=0; line<8; line++){ + if (matrix*8 + line >= currentY && matrix*8 + line < currentY+4) lineToPlace = figure[currentFigure][currentTurn][matrix*8 +line - currentY]; else lineToPlace = 0b00000000; + //lineToPlace = 0b11111111; else lineToPlace = 0b00000000; + //if (currentX <= 4 ) lineToPlace <<= 4 - currentX; else lineToPlace >>= currentX - 4; + lineToPlace = moveLine(lineToPlace, currentX); + maxOne(matrix+1, line+1, screen[matrix*8 + line] | lineToPlace ); + } +} + +uint8_t checkDown (void){ + uint8_t lineToPlace = 0b00000000; + for (uint8_t line = 0; line<4; line ++){ + lineToPlace = figure[currentFigure][currentTurn][line]; + lineToPlace = moveLine(lineToPlace, currentX); + if ( (lineToPlace & screen[ currentY+1 + line]) != 0) return 1; + } + return 0; +} + +uint8_t checkStart (void){ + uint8_t lineToPlace = 0b00000000; + for (uint8_t line = 0; line<4; line ++){ + lineToPlace = figure[currentFigure][currentTurn][line]; + lineToPlace = moveLine(lineToPlace, currentX); + if ( (lineToPlace & screen[ currentY + line]) != 0) return 1; + } + return 0; +} + +uint8_t checkLeft (void){ + uint8_t lineToPlace = 0b00000000; + uint8_t tmpLineToPlace; + for (uint8_t line = 0; line<4; line ++){ + lineToPlace = figure[currentFigure][currentTurn][line]; + tmpLineToPlace = moveLine(lineToPlace, currentX); + if ( (tmpLineToPlace & 0b10000000) != 0) return 1; + lineToPlace = moveLine(lineToPlace, currentX - 1); + if ( (lineToPlace & screen[ currentY + line]) != 0) return 1; + } + return 0; +} + +uint8_t checkRight (void){ + uint8_t lineToPlace = 0b00000000; + uint8_t tmpLineToPlace; + for (uint8_t line = 0; line<4; line ++){ + lineToPlace = figure[currentFigure][currentTurn][line]; + tmpLineToPlace = moveLine(lineToPlace, currentX); + if ( (tmpLineToPlace & 0b00000001) != 0) return 1; + lineToPlace = moveLine(lineToPlace, currentX + 1); + if ( (lineToPlace & screen[ currentY + line]) != 0) return 1; + } + return 0; +} + +uint8_t checkTurn (void){ + uint8_t lineToPlace = 0b00000000; + uint8_t testTurn; + if (currentTurn < 3) testTurn = currentTurn + 1; else testTurn = 0; + for (uint8_t line = 0; line<4; line ++){ + lineToPlace = figure[currentFigure][testTurn][line]; + lineToPlace = moveLine(lineToPlace, currentX); + //if ( (lineToPlace & 0b00000001) != 0) return 1; + if (currentFigure == 1 && currentX == 8) return 1; + if (currentFigure == 2 && currentX == 1) return 1; + if (currentFigure == 2 && currentX == 8) return 1; + if (currentFigure == 3 && currentX == 1) return 1; + if (currentFigure == 3 && currentX == 8) return 1; + if (currentFigure == 4 && currentX == 2) return 1; + if (currentFigure == 4 && currentX == 7) return 1; + if ( (lineToPlace & screen[ currentY + line]) != 0) return 1; + } + return 0; +} + +void checkFullLine (void) { + uint8_t a = 0; + uint8_t matrix = currentY / (INUSE*8); + uint8_t remainder = currentY % (INUSE*8); + for (uint8_t line = 0; line<4; line ++) if (line + currentY < INUSE*8) { + if (screen[line + currentY] == 0b11111111) { + for (a = 0; a<3; a++) { + + maxOne(matrix + 1, line + remainder +1, 0b00000000 ); + //screen[line + currentY] = 0b11111111; + //redrawScreen (); + delay_ms(1000); + maxOne(matrix + 1, line + remainder +1, 0b11111111 ); + //screen[line + currentY] = 0b00000000; + //redrawScreen (); + delay_ms(1000); + } + for (a = line + currentY; a>0; a--) screen[a] = screen[a-1]; + bleepBleepSound (); + transmit_str_USART0("Score: "); + transmit_4digit_USART0(score++); + transmit_str_USART0(" \r"); + } + } +} + +void gameOver () { + uint8_t ornament[3] = {0b00100100, 0b10010010, 0b01001001}; + uint8_t offset = 0; + for (uint8_t matrix=0; matrix < INUSE; matrix++) for (uint8_t line=0; line<8; line++){ + maxOne(matrix + 1, line + 1, 0b11111111 ); + delay_ms(500); + } + for (uint8_t matrix=0; matrix < INUSE; matrix++) for (uint8_t line=0; line<8; line++){ + maxOne(matrix + 1, line + 1, 0b00000000 ); + screen[ matrix*8 + line] = 0b00000000; + delay_ms(500); + } + + while (u == 0) { + for (uint8_t matrix=0; matrix < INUSE; matrix++) for (uint8_t line=0; line<8; line++){ + maxOne(matrix + 1, line + 1, ornament[(line+offset) % 3] ); + } + if (offset < 2) offset ++; else offset = 0; + delay_ms(1000); + } + + score = 1; + transmit_str_USART0("Score: 0000 \r"); + + currentFigure = (uint8_t)((uint16_t)timer % (uint16_t)5); + currentTurn = 0; + +} + +void stopFigure (void) { + uint8_t lineToPlace = 0b00000000; + for (uint8_t line = 0; line<4; line ++) { + lineToPlace = figure[currentFigure][currentTurn][line]; + lineToPlace = moveLine(lineToPlace, currentX); + screen[line + currentY] |= lineToPlace; + } + checkFullLine (); + currentY = 0; + currentTurn = 0; + currentX = STARTX; + currentFigure = randomDigit; + + if (checkStart () != 1) redrawScreen (); else gameOver(); +} + +// --------------------------------- MAIN ----------------------------------------------------------------------- + +int main(void) { + + // initialize the direction of PORTD to be output + + set_output(DDRB, DATAIN); + set_output(DDRB, LOAD); + set_output(DDRB, CLOCK); + set_output(DDRB, BEEPER); + + // initiation of the max 7219 + for (uint8_t matrix=0; matrix < INUSE; matrix++) { + maxOne(matrix+1, max7219_reg_scanLimit, 0x07); + maxOne(matrix+1, max7219_reg_decodeMode, 0x00); // using a led matrix, not digits + maxOne(matrix+1, max7219_reg_shutdown, 0x01); // not in shutdown mode + maxOne(matrix+1, max7219_reg_displayTest, 0x00); // no display test + for (uint8_t line=0; line<8; line ++) maxOne(matrix+1, line+1, 0); // empty registers, turn all LEDs off + maxOne(matrix+1, max7219_reg_intensity, 0x0f & 0x0f); // the first 0x0f is the value you can set (range: 0x00 to 0x0f) + } + + init_USART0(UBRR); // initialize USART0 + setRXCIE_USART0(); + sei(); + + screen[ INUSE*8 ] = 0b11111111; // bottom border for checking + currentFigure = (uint8_t)((uint16_t)timer % (uint16_t)RAND_MAX); + transmit_str_USART0("Score: 0000 \r"); + + while (1) { + if (timer % 20000 == 0) { + redrawScreen (); + if (checkDown() != 1) currentY ++; else { + if (prewRandomDigit == randomDigit) randomDigit++; + if (randomDigit > RAND_MAX+1) randomDigit = 0; + prewRandomDigit = randomDigit; + stopFigure (); + } + } + timer ++; + if (u != oldu){ + oldu = u; + randomDigit = (uint8_t)((uint16_t)timer % (uint16_t)RAND_MAX); + //transmit_1byte_USART0(timer); + //transmit_4digit_USART0(u); + if (67 == u) { + //transmit_str_USART0(" RIGHT \r"); + if (checkRight () != 1) currentX ++; + redrawScreen (); + beep (); + } + if (68 == u) { + //transmit_str_USART0(" LEFT \r"); + if (checkLeft () != 1) currentX --; + redrawScreen (); + beep (); + } + if (66 == u) { + //transmit_str_USART0(" DOWN \r"); + if (checkDown() != 1) currentY ++; + redrawScreen (); + beep (); + } + if (65 == u) { + //transmit_str_USART0(" UP \r"); + if (checkTurn () != 1) { + if (currentTurn < 3) currentTurn ++; else currentTurn = 0; + redrawScreen (); + beep (); + } + } + u = 0; + } + } + +} + -- 2.39.5